C#使用EventLog Class从evtx文件中读取事件日志

时间:2018-04-16 08:23:54

标签: c# windows event-log eventlog-source

我尝试使用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);
                    }

1 个答案:

答案 0 :(得分:0)

EventLog的Source属性是指事件查看器中的应用程序源,而不一定是您导出的源文件。

enter image description here

您需要为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);
        }

enter image description here

enter image description here