2010-06-08 97 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所得到的一樣。從來沒有,我們只需要做一些解析來獲得我們需要使用事件記錄。

相關問題