我已经使用System.Diagnostics.EventLog查看本地计算机上的日志。但是,我想打开保存的事件日志归档文件(.evt或.evtx)并查看保存文件中包含的日志。我只需要查看与文件中的日志关联的时间戳,消息,来源等。这可以在C#中完成吗?如何在.NET中打开保存的事件日志归档?
12
A
回答
10
检出System.Diagnostics.Eventing.Reader
命名空间。具体是EventLogQuery
班。
http://msdn.microsoft.com/en-us/library/bb671200(v=VS.90).aspx
2
尝试从微软LogParser工具。它可以使用类似SQL的选择语言从任何日志格式的日志中获取任何数据。它也可以用于任何.NET应用程序。 CSV日志的例子解析(我相信你可以使用此代码与小的修改EVT文件):
public IList<LogRow> GetLog()
{
return Load("SELECT *, OUT_ROW_NUMBER() FROM logfile*.log WHERE Field2='Performance' ORDER BY Field1 ASC");
}
private static IList<LogRow> Load(string sql)
{
IEnumerable<string[]> log = ParseLog(sql);
return Convert(log);
}
private static IList<LogRow> Convert(IEnumerable<string[]> log)
{
return log.Select(logRecord => new LogRow
{
TimeStamp = logRecord[2],
Category = logRecord[3],
Machine = logRecord[4],
ThreadId = logRecord[5],
ProcessId = logRecord[6],
ProcessName = logRecord[7],
DomainName = logRecord[8],
Message = logRecord[9],
Number = logRecord[10]
}).ToList();
}
private static IEnumerable<string[]> ParseLog(string query)
{
var records = new LogQueryClassClass().Execute(
query,
new COMCSVInputContextClass { headerRow = false, iTsFormat = "yyyy-MM-dd HH:mm:ss.fff" });
var entries = new List<string[]>();
while (!records.atEnd())
{
entries.Add(records.getRecord().toNativeString("CSVseparator").Split(
new[] { "CSVseparator" },
StringSplitOptions.None));
records.moveNext();
}
records.close();
return entries;
}
0
如果你的目的是要读取保存的日志信息,我们可以使用EventLogReader做到这一点。它基本上有两个参数 - 文件名(如在文件路径中)和第二个参数指定路径类型。供您参考,说你有一个保存文件采用.evtx - temp.evtx,你可以把它读作在:
new EventLogReader(filepath, PathType.Filepath);
这给你一个事件日志读取器,它可以用来读取事件。此外,如果您想要从中读取内容,我们可以使用基本上是字符串列表的属性。可以阅读它,解析它,并获取所需的任何信息。
我同意我们没有提供直接获取所有细节的规定,就像我们使用EventLogEntry所得到的一样。从来没有,我们只需要做一些解析来获得我们需要使用事件记录。
相关问题
- 1. 保存和打开日志文件
- 2. 如何阅读归档的事件日志文件?
- 3. logrotate归档dateext归档日志文件
- 4. Cassandra:如何归档日志文件
- 5. n日志文件归档
- 6. 如何解析和删除Powershell中的存档事件日志
- 7. 如何打开从VBA归档文件而不解压存档
- 8. Odoo - 日志归档?
- 9. 归档单个归档中的多个日志文件
- 10. PHP error_log中()归档日志文件
- 11. 如何以编程方式打开事件日志(.net,Windows 7 x64)?
- 12. 如何修改vbs以存档事件日志
- 13. 保存归档的文档文件夹
- 14. Cassandra - 归档提交日志
- 15. 如何在vb.net中保存打开的word文档
- 16. 如何以编程方式打开事件日志?
- 17. 如何打开SQL Server事务日志文件(LDF)?
- 18. 保持日志文件打开与每次打开它
- 19. .Net/Windows事件日志:当设置“根据需要覆盖事件”时,如何保留特定日志
- 20. 在rails中保存用户事件的日志
- 21. 如何打开保存在内存中
- 22. 如何使用Log4Net实现日志文件的自动归档
- 23. Serilog:打开日志文件
- 24. IOError打开日志文件
- 25. 如何在Linux中的文件中保存日志输出
- 26. 如何将Symbian设备日志打印或保存到文件
- 27. 如何将事件日志存储在文件夹中
- 28. 如何在使用Integration Service IIB时保存开始日志和结束日志?
- 29. 如何在日志中打破事件信息
- 30. “无法打开日志的源代码” - Windows 7 - .NET的Web服务 - 事件日志