我看到来自 SAS 存储过程 (STP) 的日志信息仅在 STP 完成后附加到 .log 文件。我想通过跟踪 STP 日志文件来监控长时间运行的 STP。有没有办法让 SAS 立即写入日志信息,而不是这种延迟行为?
示例:我启动一个 STP (stp_test.sas) 并跟踪日志文件。最后一行看到的是:
2016-02-19T11:05:03,630 INFO [00000004] :sassrv - [00000003] STPXUTL Execute using file path: /SAS/SASHome/SASFoundation/9.4/sasstp/stp_test.sas
只有在完成后(53 秒后),我才能看到下面的下一行,特别包括对我很重要的注释。
2016-02-19T11:05:56,634 INFO [00079501] 8:sasmi - STP: 3: Execution Complete. Status=4
2016-02-19T11:05:56,678 INFO [00079501] 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 [00079501] 8:sasmi - NOTE: PROCEDURE SQL used (Total process time):
2016-02-19T11:05:56,679 INFO [00079501] 8:sasmi - real time 0.00 seconds
2016-02-19T11:05:56,679 INFO [00079501] 8:sasmi - cpu time 0.01 seconds
最佳答案
您可以将代码包装在 proc printto 中:
filename stplog temp;
proc printto log=stplog;run;
*your stp goes here;
proc printto;run;
现在,日志将写入存储过程服务器工作目录中的临时文件。我仍然会按照 Robert 的建议添加 write=immediate。
关于logging - SAS 9.4 存储过程日志文件监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35510012/