2011-10-09 39 views
8

林使用在Desc命令模式下使用EventLogReader?

EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, queryString); 
    EventLogReader logReader = new EventLogReader(eventsQuery); 

爲了讀取日誌事件。

我需要找到事件編號#xxx沒關係

讀者從1--->100

開始的最新使用我需要它從100--->1開始,所以我可以得到第一個(滿足我的查詢)和打破循環。

不想使用中間人DATA BUFFER然後reverse它。

p.s. - 我的日誌文件大約是400 MB。 (win7)。

回答

10

您可以使用ReverseDirection財產上的EventLogQuery類:

EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, queryString); 
eventsQuery.ReverseDirection = true; 

EventLogReader logReader = new EventLogReader(eventsQuery); 

希望,這會有所幫助。

+0

你是男人....... –

+0

它是用C# –

+0

@Royi納米爾來讀取事件日誌的最後一個事件的最快方法:這是最快的方法?這取決於您正在編程的應用程序的類型。如果您的應用程序一直在運行,那麼您可以訂閱特定事件而不是重複查詢事件日誌。 – Hans

0

只是供參考,如果你只是想從事件查看器的最後XX事件,你不必使用EventLogReader。我不想使用ELR,因爲它僅限於Vista/Windows2008/Win7。要在.NET中使用oldschool EventLog對象執行此操作,只需在「條目」對象上使用索引器即可。例如下面的代碼片段:

 EventLog log = new EventLog("Application"); 
     for (int counter = 1; counter <= sizeToGet; counter++) 
     { 
      string msg = log.Entries[log.Entries.Count - counter].Message; 

      Console.WriteLine(msg) 
     }