【发布时间】:2021-04-15 09:49:14
【问题描述】:
我曾经每天运行 3 个 SAS EG 项目。几天后,我们有了一个“SAS 调度程序”,它基本上在夜间运行后者(第一个在 00:00 AM,第二个在 01:00 AM,第三个在 03:00 AM)。每个 SAS 项目都有多个 SAS 程序。
总而言之,这是个好消息,但这也意味着我不能再直接查看日志了。
为了跟踪夜间工作,我正在尝试找出为每个项目导出日志文件的最佳方式。我最近发现了 SAS 项目日志,它基本上总结了 SAS 项目中所有程序的日志。
我在 SAS 社区论坛上发现了 CaseySmith 的答案,基本上调整了 .vbs 脚本以使用以下代码将 SAS 项目日志文件保存为 .txt:
Set objProjectLog = objProject.ProjectLog
objProjectLog.Clear()
objProjectLog.Enabled = True
'strProjectLog = objProjectLog.Text
objProjectLog.SaveAs "c:\temp\projectLog.txt"
但是,1) 它是一个 .txt 文件而不是日志文件,并且 2) 我不知道在我当前的 .vbs 脚本中添加它的位置:
Option Explicit
Dim app
Call dowork
'shut down the app
If not (app Is Nothing) Then
app.Quit
Set app = Nothing
End If
Sub dowork()
On Error Resume Next
'----
' Start up Enterprise Guide using the project name
'----
Dim prjName
Dim prjObject
prjName = "C:\Users\kermit\Desktop\Project.egp" 'Project Name
Set app = CreateObject("SASEGObjectModel.Application.8.1")
If Checkerror("CreateObject") = True Then
Exit Sub
End If
'-----
' open the project
'-----
Set prjObject = app.Open(prjName,"")
If Checkerror("app.Open") = True Then
Exit Sub
End If
'-----
' run the project
'-----
prjObject.run
If Checkerror("Project.run") = True Then
Exit Sub
End If
'-----
' Save the new project
'-----
prjObject.Save
If Checkerror("Project.Save") = True Then
Exit Sub
End If
'-----
' Close the project
'-----
prjObject.Close
If Checkerror("Project.Close") = True Then
Exit Sub
End If
End Sub
Function Checkerror(fnName)
Checkerror = False
Dim strmsg
Dim errNum
If Err.Number <> 0 Then
strmsg = "Error #" & Hex(Err.Number) & vbCrLf & "In Function " & fnName & vbCrLf & Err.Description
'MsgBox strmsg 'Uncomment this line if you want to be notified via MessageBox of Errors in the script.
Checkerror = True
End If
End Function
最后,我希望在早上运行一个程序,扫描 3 个项目日志文件中的注释、警告和错误,然后向自己发送一封包含结果的电子邮件。因此,有没有办法将 SAS 项目日志(而不是手动)导出到文件夹中?
【问题讨论】:
-
带有程序输出的文本文件是日志文件。如果您想更轻松地跟踪它们,可以为其添加 .log 扩展名。
-
我不知道 VBS 代码在做什么,但从 cmets 你可能想把它放在 RUN 和 SAVE 之间。除了将文件扩展名从 .txt 更改为 .log 之外,您可能还希望在文件名中包含一个时间戳,这样您就可以为同一个项目拥有多个日志。
-
@Tom .vbs 代码是您在 SAS EG 中安排作业时创建的。我想要的是将 SAS 项目日志文件输出到外部文件夹,以便在第二天早上扫描它以查找潜在的警告/错误。
标签: vbscript sas monitoring