我正在处理大小超过2GB的evtx文件。 在我的C#程序中,如果我做这样的事情
EventLogReader reader = new EventLogReader("*[System/EventRecordID>0]");
for (EventRecord eventInstance = reader.ReadEvent(); eventInstance != null; eventInstance = reader.ReadEvent())
{
...
}
for循环从不运行因为eventInstance等于null。 我对大型evtx文件只有这个问题。
另一种方法是使用LINQ读取evtx文件,如本文所述 https://phejndorf.wordpress.com/2011/03/31/using-c-and-linq-to-read-a-windows-eventlog-file-evtx/
如果我使用这种方法,我可以读出没有问题的文件。
这是一个好方法吗?
有任何意见吗?
由于
更新:
我在第一个场景中一直在研究这个问题,问题是EventRecordID太大了。如果我将查询设置为" *"。它工作正常。我不明白这一点,因为EventRecord中的RecordID类型很长。
第二种情况总是很好。
答案 0 :(得分:0)
如果要编写用于加载文件等的代码,问题中提到的方法很好。
理想情况下,应该使用Microsoft's Log Parser。使用这个只需编写类似SQL的查询来获取统计信息。