我如何定期备份Windows应用程序日志?

我如何定期备份Windows应用程序日志?,windows,logging,batch-file,backup,event-viewer,Windows,Logging,Batch File,Backup,Event Viewer,我正在使用一个定期登录Windows应用程序日志(可通过事件查看器管理工具查看)的应用程序,我正在寻找一种每天备份它的方法。这一点很重要,因为我们有时会发现应用程序存在问题,为了进一步调查,我们需要一周前记录的信息。我们正在寻找的事件不一定仍然存在。。。我已经尝试过增加大小和所有这些,但我认为自动备份将促进这一过程。我们不会得到巨大的日志,而是多个中等大小的日志 我更喜欢像批处理文件+Windows调度器这样的简单解决方案,但也对其他方法感兴趣 谢谢您可以使用Windows Management

我正在使用一个定期登录Windows应用程序日志(可通过事件查看器管理工具查看)的应用程序,我正在寻找一种每天备份它的方法。这一点很重要,因为我们有时会发现应用程序存在问题,为了进一步调查,我们需要一周前记录的信息。我们正在寻找的事件不一定仍然存在。。。我已经尝试过增加大小和所有这些,但我认为自动备份将促进这一过程。我们不会得到巨大的日志,而是多个中等大小的日志

我更喜欢像批处理文件+Windows调度器这样的简单解决方案,但也对其他方法感兴趣


谢谢

您可以使用Windows Management Instrumentation(WMI)读取事件日志并对结果执行任何操作。这是一个您可以根据自己的目的进行调整的WMI脚本。

这是我不久前发现的WMI脚本。这可能就是你要找的

dim strComputer = "." 'Define here the Remote IP Address or Computername
dim objWMIService
dim colLogFiles
dim objLogfile
dim errBackupLog

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Backup)}!\\" &  strComputer & "\root\cimv2")

Call eventlogbackup("Application")
Call eventlogbackup("System")
Call eventlogbackup("Security")

Function eventlogbackup(logtype)

Set colLogFiles = objWMIService.ExecQuery ("SELECT * FROM Win32_NTEventLogFile WHERE LogFileName='" & logtype & "'")

For Each objLogfile in colLogFiles
 errBackupLog = objLogFile.BackupEventLog("\\server\eventlogs\" & strComputer & "\" &logtype & ".evt")
 If errBackupLog <> 0 Then
    Wscript.Echo "The " & logtype &" event log could not be backed up."
 Else
    objLogFile.ClearEventLog()
    Wscript.Echo "The " & logtype &" event log is backed up."
 End If
Next

End Function
dim strComputer=“.”在此定义远程IP地址或计算机名
暗淡的物体
dim Collog文件
dim objLogfile
暗回传
设置objWMIService=GetObject(“winmgmts:”&“{impersonationLevel=impersonate,(Backup)}!\\”&strComputer&“\root\cimv2”)
调用eventlogbackup(“应用程序”)
调用eventlogbackup(“系统”)
调用eventlogbackup(“安全”)
函数eventlogbackup(日志类型)
Set colLogFiles=objWMIService.ExecQuery(“从Win32\u NTEventLogFile中选择*,其中LogFileName=”&logtype&“”)
对于colLogFiles中的每个objLogfile
errBackupLog=objLogFile.BackupEventLog(“\\server\eventlogs\”&strComputer&“\”&logtype&“.evt”)
如果errBackupLog为0,则
Echo“无法备份”&logtype&“事件日志。”
其他的
objLogFile.ClearEventLog()
Echo“已备份”&logtype&“事件日志”
如果结束
下一个
端函数

只需在预定任务中设置此脚本,就可以开始了

> P>您可能需要考虑设置一个将Windows事件转发到SysLogServer的工具。然后,不必运行执行备份的进程,您将几乎在将所有日志项添加到windows事件日志的同时将它们转发到第二个位置


根据您使用的syslog服务器,您可以设置过滤器来忽略某些事件或将它们发送到不同的文件。您可以随意设置日志滚动。

将应用程序通道中的所有事件输出为XML:

wevtutil.exe qe application
对于可读文本输出,请使用:

wevtutil.exe qe application /f:text

您可以轻松地将这些输出中的任何一个定期传输到一个文件进行备份。

看起来很有希望-我会在有机会的时候尝试一下,并让您知道它是如何进行的。