2011-11-21 59 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); 
       }