Creating log file for Matlab compiler's created executable

19 views (last 30 days)
Hi I am using matlab compiler to compile an application. I want to create a logfile when its executed. Everything works fine, and logfile is created and information from the Matlab command prompt is added to it as well. What if I want to use a variable logfile name, such as using current date and time as a part of the filename. To be specific, I want to use:
datestr(clock,30)
as a part of the name so that a filename such as:
mylogfile_20170428T101532.log
is created. The way to create fixed name logfile at run time is to specify it at the compile time:
mcc -R '-logfile, filename.log' ..........
Using strcat options for variable filename such as:
mcc -R strcat('''-logfile,DotCodeReader_',datestr(clock,30),'.log''')
Don't work. I don't want to use the diary option of creating a logfile since diary created logfile appears empty until the executable is stopped.
Any suggestions, please?
Best Regards
Wajahat

Answers (2)

Prannay Jain
Prannay Jain on 1 May 2017
You probably cannot provide the variable in the logfile name while using 'mcc'. As a workaround, create an expression of the mcc command where you use the filename variable and call this expression in eval.
>> filename = ['mylogfile_', datestr(clock,30), '.log']
>> exp = ['mcc -m test.m', ' -R ''-logfile,', filename, '''']
>> eval(exp);
  2 Comments
Walter Roberson
Walter Roberson on 1 May 2017
That cannot help relative to the option of using mcc as a function passing in variables like Wajahat Kazmi showed.
Wajahat Kazmi
Wajahat Kazmi on 3 May 2017
Edited: Wajahat Kazmi on 3 May 2017
Thanks. It does work, however, the point of using the variable name is that the compiled EXE should generate a new name of the logfile, every time it is executed. With the above solution using eval, the filename gets pre-defined. So this is not desired.

Sign in to comment.


Jan
Jan on 1 May 2017
Do you mean:
filename = ['mylogfile_', datestr(clock,30), '.log'];
mcc('-R', '-logfile', filename)
?
  2 Comments
Wajahat Kazmi
Wajahat Kazmi on 1 May 2017
Edited: Wajahat Kazmi on 3 May 2017
Hi Jan Yes. Thanks a lot for your suggestion. But it says '-a' is not used:
filename = ['mylogfile_', datestr(clock,30), '.log'];
mcc ('-R', '-logfile',filename, '-m', '-o', 'myoutputexec', 'mymatlabcode.m')
Error: You specified the file "mylogfile_20170501T215900.log" without using the "-a" option.
Whereas, '-a' option includes an already existing file in the compilation. Besides, the filename creating should be a part of the mcc command line so that every time the compiled executable is run, it should generate a new logfile with date and time of creation a part of it. Even some random number would also work. The point is that re-running the executable should not over write the previous log file, which, unless the name is changed, it does.
Wajahat Kazmi
Wajahat Kazmi on 3 May 2017
Using the following:
strcat('-logfile,', 'mylogfile_', datestr(clock,30), '.log')
in the mcc function call does work, but again, it fixes the logfile name to the date and time when the executable was generated.
mcc ('-R', strcat('-logfile,', 'mylogfile_', datestr(clock,30), '.log') '-m', '-o', 'myoutputexec', 'mymatlabcode.m')
The question remains, as to how to get the executable call either:
datestr(clock,30)
or even a random number generator instead to generate a new sequence of characters to the logfile name every time the exe is run.

Sign in to comment.

Categories

Find more on C Shared Library Integration in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!