【问题标题】:Read Event log file from path从路径读取事件日志文件
【发布时间】:2015-08-28 19:43:06
【问题描述】:

我的问题和How do you open the event log programatically?这个问题很相似 除了我正在记录任何东西。我需要从多台未连接的机器创建日志条目数据库。我得到 .evtx 文件,然后我尝试处理它们。现在我正在从导出的 xml 文件中进行操作。但我想跳过 to xml 转换部分。我已经阅读了https://msdn.microsoft.com/en-us/library/System.Diagnostics.EventLog.aspx 文章,但没有找到我想要的东西。有没有办法在不转换为 xml 的情况下做我想做的事?

【问题讨论】:

标签: c# windows logging event-log


【解决方案1】:

使用System.Diagnostics.Eventing.Reader.EventLogReader:

using (var reader = new EventLogReader(@"path\to\log.evtx", PathType.FilePath))
{
    EventRecord record;
    while((record = reader.ReadEvent()) != null)
    {
        using (record)
        {
            Console.WriteLine("{0} {1}: {2}", record.TimeCreated, record.LevelDisplayName, record.FormatDescription());
        }
    }        
}

【讨论】:

  • 这绝对解决了问题。谢谢!既然EventRecord 实现了 IDisposable 不应该用 using 包装吗?
  • @PonuryCiastkarz 我没有注意到这一点。我只是假设它只是一个简单的数据容器。更新了答案。
  • 我得到 'EventLogReader' 由于其保护级别而无法访问,EventLogReader.ReadEvent() 在 .Net Standard 和 .Net Core 框架上都有相同的错误。我认为自从编写此答案以来,这些已被弃用。
  • @computercarguy 这个类不包含在 .NET Standard 中。您必须使用完整的 .NET 框架或 .NET Core 3。该错误似乎来自 Visual Studio 建议的不相关包 (TaskScheduler)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多