我知道PROC PRINTTO LOG="C:TEMP\SAS LOG.TXT"
会输出SAS程序日志的全部内容,但这也会在程序运行时将日志窗口留空,我无法查看SAS程序的“实时”进度可以这么说。
我想最终保存日志以供进一步审核,但我也想留意当我正在运行测试时发生的事情等等 - 有没有办法打印日志和当日志内容同时发生时,保持日志的内容?
答案 0 :(得分:0)
如果您使用的是Enterprise Guide或任何EBI客户端,则可以在应用程序服务器上启用日志记录。这将为您提供日志副本以及常规日志。虽然不会为Base SAS工作。
<强>步骤:强>
编辑:如果您乐意接受顺序 - 而不是同步 - 日志记录,我建议您回答question中概述的方法(基本上是外部日志文件返回并打印到会话日志)
答案 1 :(得分:0)
我同意@ Reeza建议尝试-altlog。不幸的是,在调用SAS时需要指定此选项。一种方法是在SAS配置文件中添加一行(我的是C:\ Program Files \ SASHome \ SASFoundation \ 9.4 \ nls \ en \ sasv9.cfg):
-altlog d:\junk\MySASaltlog.log
每次启动SAS时,除了日志窗口外,它还会写入MySASaltlog.log。每个会话都会覆盖MySASaltlog.log。你必须跳过一些箍来为每个会话生成一个单独的日志。
我认为如果你能在SAS会话期间在options语句中指定altlog,那将会很棒,例如:
options altlog="d:\junk\MySASaltlog_%sysfunc(today(),yymmddn8)";
如果您同意,请赞成/ upvote我的SAS选票提出的建议:https://communities.sas.com/t5/SASware-Ballot-Ideas/Allow-ALTLOG-to-be-specified-on-OPTIONS-statement/idi-p/219628
PC SAS的另一种方法是使用DM语句。提交以下语句会将当前日志窗口的内容复制到MyLog_YYYYMDD.log:
dm "log; file ""d:\junk\MyLog_%sysfunc(today(),yymmddn8).log"" replace;";
您也可以将该命令分配给功能键。
最后一个想法是质疑为什么要从交互式SAS会话中保存日志。大多数人使用交互式会话来开发代码。然后,当它们完成后,它们会批量提交程序以进行最终的生产运行。这样做的好处是可以从干净的SAS会话开始,以及自动编写日志文件。使用这种方法,从交互式会话中保存日志文件很少有用。