SAS:打印以记录并同时查看实时日志窗口

时间:2016-02-24 17:47:56

标签: logging printing window sas viewer

我知道PROC PRINTTO LOG="C:TEMP\SAS LOG.TXT"会输出SAS程序日志的全部内容,但这也会在程序运行时将日志窗口留空,我无法查看SAS程序的“实时”进度可以这么说。

我想最终保存日志以供进一步审核,但我也想留意当我正在运行测试时发生的事情等等 - 有没有办法打印日志和当日志内容同时发生时,保持日志的内容?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Enterprise Guide或任何EBI客户端,则可以在应用程序服务器上启用日志记录。这将为您提供日志副本以及常规日志。虽然不会为Base SAS工作。

<强>步骤:

  1. 导航至:[sasconfig] \ Lev1 \ SASApp \ WorkspaceServer
  2. 将logconfig.xml重命名为logconfig.xml.orig
  3. 将Logconfix.trace.xml重命名为logconfig.xml
  4. 重新启动对象生成器
  5. 编辑:如果您乐意接受顺序 - 而不是同步 - 日志记录,我建议您回答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会话开始,以及自动编写日志文件。使用这种方法,从交互式会话中保存日志文件很少有用。