2010-06-08 127 views
12

我已经使用System.Diagnostics.EventLog查看本地计算机上的日志。但是,我想打开保存的事件日志归档文件(.evt或.evtx)并查看保存文件中包含的日志。我只需要查看与文件中的日志关联的时间戳,消息,来源等。这可以在C#中完成吗?如何在.NET中打开保存的事件日志归档?

回答

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所得到的一样。从来没有,我们只需要做一些解析来获得我们需要使用事件记录。

相关问题