2015-11-12 8 views
1

Я пытаюсь получить журнал событий в категории, отличной от приложения. Например, я хочу получить информацию в «Microsoft-Windows-Application Server-Applications/Operational». Ниже мой кодКак получить журнал событий, отличный от категории приложения?

EventLog log = new EventLog("Microsoft-Windows-Application Server-Applications/Operational"); 
int index = log.Entries.Count - 1; 
Debug.WriteLine(log.Entries[index].Message); 

Но он всегда показывает ошибку:

The event log 'Microsoft-Windows-Application Server-Applications/Operational' on computer '.' does not exist. 

Если я просто использовать «Application», то я могу получить журнал в категории приложений.

Как получить журнал для "Microsoft-Windows-Application Server-Applications/Operational"?

Благодаря

enter image description here

ответ

4

Класс EventLog позволяет получить доступ к журналам событий Windows. Вместо этого вы должны использовать EventLogReader в домене System.Diagnostics.Eventing.Reader.

 EventLogQuery query = new EventLogQuery("Microsoft-Windows-Application Server-Applications/Operational", PathType.LogName, "*"); 
     EventLogReader reader = new EventLogReader(query); 
     EventRecord eventRecord; 
     while ((eventRecord = reader.ReadEvent()) != null) 
     { 
      Console.WriteLine(String.Format("{0} - {1}", 
       eventRecord.TimeCreated, 
       eventRecord.FormatDescription())); 
     } 
+0

Это, вероятно, неверно в отношении доступа к журналам событий Windows. При загрузке EventLog.GetEventLogs() он показывает несколько журналов из приложений и журналов служб –

+0

Источник: MSDN https://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog «EventLog позволяет вам получить доступ или настроить журналы событий Windows ». – MatthewG

+0

Эта страница нуждается в большем определении того, что такое «журнал событий Windows». Ничего страшного, было просто любопытно. –

1

Вы, возможно, потребуется использовать EventLogReader и EventLogQuery для достижения этой цели.

EventLogReader reader = new EventLogReader("Microsoft-Windows-Application Server-Applications/Operational"); 
string message = reader.ReadEvent().FormatDescription(); 

Вы можете использовать EventLogQuery для получения результатов в порядке убывания.

Однако я не уверен, почему это не работает с EventLog. Может быть, кто-то еще может помочь прояснить это.

Смежные вопросы