02-19-2016 02:34 PM
I am seeing that the log information from a SAS Stored Process (STP) is appended to the .log file only upon completion of the STP. I want to monitor long running STPs by tailing the STP log file. Is there a way to get SAS to write the log information immediately instead of this delayed behavior?
Example: I kick off an STP (stp_test.sas) and tail the log file. The last line see is:
2016-02-19T11:05:03,630 INFO  :sassrv -  STPXUTL Execute using file path: /SAS/SASHome/SASFoundation/9.4/sasstp/stp_test.sas
Only upon completion (53 seconds later) I get the following next lines including specifically the NOTES that are important to me.
2016-02-19T11:05:56,634 INFO  8:sasmi - STP: 3: Execution Complete. Status=4 2016-02-19T11:05:56,678 INFO  8:sasmi - NOTE: %INCLUDE (level 1) file /SAS/SASHome/SASFoundation/9.4/sasstp/stp_test.sas is file /SAS/SASHome/SASFoundation/9.4/sasstp/stp_test.sas. 2016-02-19T11:05:56,679 INFO  8:sasmi - NOTE: PROCEDURE SQL used (Total process time): 2016-02-19T11:05:56,679 INFO  8:sasmi - real time 0.00 seconds 2016-02-19T11:05:56,679 INFO  8:sasmi - cpu time 0.01 seconds
02-21-2016 12:45 PM
Maybe I am not the most appropriate person to answer your question, but let me give it a try:
If you need additional details on the log, maybe you would like to increase your log level to debug (and/or enable the macro debug options on the code).
Still, this might add too much information on your logs and not the information you expect, because SAS only writes to the log when a procedure is finished or with explicit statements in your code.
Said this, and as common programming procedure, what I would really advise you is to include those explicit statements (eg %put statements) to write extra lined on your log or a different log file, if you will
03-04-2016 07:00 PM - edited 03-04-2016 07:01 PM
The stored process server logging is controled by the log4sas facility. The file that allows you to control this is most likely logconfig.xml (but could be different, under control of the logconfigloc SAS invocation option).
There is one parameter that may help you achieve what you want. Add this to logconfig.xml file:
<param name="ImmediateFlush" value="TRUE"/>
Maybe also the SAS option UNBUFLOG will help but I am uncertain how well that plays with log4sas. Seems worth a try. You will not get log lines any faster than that.
Be aware of possible trade-offs like additional processing and I/O overhead.
Hope this helps.
03-05-2016 10:55 AM - edited 03-05-2016 10:57 AM
Thanks jklaverstijn for the suggestion. This sounds promising I will try that. In case it does not work I have decorated all STPs to proc printto a unique file name.