我尝试使用System.Diagnostics中的EventLog类读取存储的.evtx。 但它没有用。
是否可以使用EventLog Class读取存储的evtx文件或问题在哪里?
以下是我的代码
string source = @"S:\test.evtx";
EventLog eventLog = new EventLog();
eventLog.Source = source;
foreach (EventLogEntry log in eventLog.Entries)
{
Console.WriteLine("{0}\n", log.Message);
}
答案 0 :(得分:0)
EventLog的Source属性是指事件查看器中的应用程序源,而不一定是您导出的源文件。
您需要为Source属性提供应用程序的名称,而不是文件名。
更新:如果你坚持从evtx读取,那么EventLogReader类必须是解决方案。
//EVENT LOG READER
string source = @"C:\testev.evtx";
using (var reader = new EventLogReader(source, PathType.FilePath))
{
EventRecord record;
while ((record = reader.ReadEvent()) != null)
{
using (record)
{
Console.WriteLine("{0} {1}: {2}", record.TimeCreated, record.LevelDisplayName, record.FormatDescription());
}
}
}
//EVENT LOG
EventLog eventLog = new EventLog();
eventLog.Source = "ESENT"; //name of an application
foreach (EventLogEntry log in eventLog.Entries)
{
Console.WriteLine("{0}\n", log.Message);
}