2011-11-21 58 views
2

我想連接到本地日誌,並得到一些事件,從它。我用這個代碼:訪問本地事件日誌在C#

EventLog el = new EventLog(); 
el.Source = ""; 

但我不知道是什麼地方的EventLog源。 有誰知道當地的來源是什麼?

回答

2

這要看從哪個登錄你想讀的類型。它可能是Application,Security,SetupSystem

您可以在事件查看器來源可看到:

enter image description here

2

我這樣一個月前做了一個計劃:(使用XPath查詢)

const string queryString = @"<QueryList> <Query Id=""0"" Path=""Security""> <Select Path=""Security"">*</Select> </Query></QueryList>"; 

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

     for (EventRecord eventInstance = logReader.ReadEvent(); 
      null != eventInstance; eventInstance = logReader.ReadEvent()) 
     { 
      foreach (var VARIABLE in eventInstance.Properties) 
       if (VARIABLE.Value.ToString().ToLower().Contains(...) 
       { 
        ... 
       } 
     } 
+0

什麼是EventLogQuery命名空間? –

+0

@ahmadalishafiee:當您搜索命名空間時,請在msdn中搜索該項目:http://msdn.microsoft.com/en-us/library/system.diagnostics.eventing.reader.eventlogquery.aspx =>命名空間是在左邊的樹上指示:'System.Diagnostics.Eventing.Reader'。 – Otiel

+0

繼續獲取授權例外,互聯網上沒有任何地方解釋了這個... – jjxtra

0

通過你的問題......什麼是本地源 - 你想要的來源,或只是一個列表你的意思想確認本地源是進程正在運行的機器?

如果要列舉的事件......有很多不同的方式來做到這一點,包括

var log = new EventLog("Application"); 
res = from entry in log.Entries.Cast<EventLogEntry>() 
entry.TimeGenerated >= start 
    select entry; 


       foreach (var e in res) 
       { 
        Console.WriteLine(e.Message); 
       }