如何高效查询事件查看器

Posted

技术标签:

【中文标题】如何高效查询事件查看器【英文标题】:How to efficiently query the event viewer 【发布时间】:2012-10-31 15:21:42 【问题描述】:

我可以轻松地写入事件日志并读取其内容。但是,我希望能够仅查询事件查看器的子集,主要是我在特定时间范围内创建的源。

据我所知,可以按机器名称和来源进行过滤(由于某种原因,我还没有让它工作,它总是从应用程序日志中返回所有内容),但不能按日期和时间。

我可以使用 LINQ 轻松做到这一点。但是,它仍然会查看整个应用程序日志,因此需要一段时间。随着时间的推移,我猜事件查看器中的事件数量会越来越大,所以我看不到会变得更好。

有没有办法通过比通常参数更多的参数来查询事件查看器以加快进程,还是我必须“忍受它”?

谢谢

【问题讨论】:

【参考方案1】:

我使用 WMI 进行了一些测试,当我得到一小部分结果时,结果证明这是一个足够好的解决方案。

Dim oMag As New Management.ManagementObjectSearcher("SELECT User, Type,TimeGenerated,Message FROM Win32_NTLogEvent WHERE LogFile = 'Application' AND SourceName = 'Journalisation' AND TimeGenerated >= '20121031180000.000000-000' AND TimeGenerated <= '20121031181500.000000-000'")
Dim oMagColl As Management.ManagementObjectCollection = oMag.Get

For Each oMagObj As Management.ManagementObject In oMagColl
    Msgbox(oMagObj("User") & vbTab & oMagObj("Type") & vbTab & oMagObj("TimeGenerated") & vbTab & oMagObj("Message"))    
Next

我觉得奇怪的是日期时间格式。此外,有时感觉整个事情都无缘无故地花费了很长时间。

无论如何,我认为这是一个很好的解决方案。

【讨论】:

以上是关于如何高效查询事件查看器的主要内容,如果未能解决你的问题,请参考以下文章

什么是事件查看器

怎么查看电脑开机记录?

事件查看器所有事件ID的含义

怎么查看电脑重启记录

如何查看SQL Server2000执行过的SQL语句

怎么查看自己的电脑开机记录?