我现在正在构建一个Windows事件日志查看器,我们有很多Window Server 2003框。我正在使用EventLogReader类进行查询,但它需要Vista +所以无法在Windows Server 2003上运行。虽然EventLog类可用但速度非常慢。我有其他选择吗?
更新:我不是在查询所有的事件日志,而是在查询日期范围内的事件日志,是否有办法让它更快,因为我们只需要事件日志属于某个范围?现在使用EventLog类即使对于本地盒子来说也是非常慢,对于远程盒子来说是难以忍受的。
答案 0 :(得分:2)
我只是玩logparser。我之前建议的Log Parser Studio是这些任务集的UI。
这是一个logparser查询:
logparser.exe -i:EVT “SELECT TimeGenerated,EventID,EventType,EventTypeName,EventCategory,EventCategoryName,SourceName,
Strings,ComputerName,SID,Message FROM \\servername\Application WHERE TimeGenerated > ’2012-07-12 00:00:00′ AND EventType IN (1;2) ORDER BY TimeGenerated DESC” -o:CSV -q:ON -stats:OFF >> c:\temp\Events.csv
将'\ servername \ Application'替换为您的服务器详细信息。
-i:EVT告诉它查询事件日志。
以下是我使用的快速LogParser reference。
答案 1 :(得分:2)
EventLog类很慢。访问速度取决于事件日志的大小。在大多数服务器方案中,允许它们在归档之前变得非常大。本机Windows事件查看器还支持远程日志查看,允许您演示远程日志查看的速度。
我认为EventLog的Entries属性可能按日期排序。这意味着您可以实现条目的二进制搜索(默认情况下Linq不会这样做)以加快速度。以下是二进制搜索扩展的示例:Can LINQ use binary search when the collection is ordered?
答案 2 :(得分:1)
如果Which approach is better to read Windows Event log in C#? WMI or EventLog或与{{3}}相关,则此重复。
除了上面链接提供的信息之外,请考虑在日志文件事件翻转之前限制信息量。
答案 3 :(得分:1)
你可以查看我为logparser写的tool。它有一个类似SQL的创建屏幕,可以为您提供可以使用的好的查询示例。
如果您在应用程序中包含LogParser,请注意如何部署它:logparser binaries distribution,您可以看到我单独包含它。
#1为什么我坚持使用EventLog类,因为EventLogReader不是 Win Server 2003上支持
我建议您从Visual Log Parser借用代码。
#2需要一次查询多个服务器
LogParser非常适合查询多个服务器和多个日志。查看按时间组合和排序的所有日志,甚至按事件分组,都非常方便。
#3我没有查询所有的事件日志,而是查询事件 记录日期范围,有没有办法让它更快,因为我们 只需要事件日志属于一个范围?
是的,LogParser飞行速度快,速度超快!以下是通过DateRange查询Evt日志的方法:
SELECT Extract_FileName(EventLog) AS EventLog, RecordNumber, TimeGenerated, EventID, EventType, EventTypeName, EventCategoryName, SourceName, ComputerName, Message FROM
\\servername\Application
WHERE TimeWritten > '2011-01-25 12:01:00'
AND TimeWritten < '2012-01-25 12:01:00'
#4我试了一下,Log Parser Studio似乎只适用于日志 文件,而不是本地系统或远程服务器。
Log Parser Studio只是一个用于logparser的GUI,它应该可以工作,尝试这个原始查询(不使用直接使用LogParser的LP Studio)来获取域中的所有日志:
LogParser "SELECT SourceName,TimeGenerated,TimeWritten,Message INTO filename.csv FROM \\Server\Application where Message Like '%mydomain.com%'" -o:CSV