Какой самый простой способ запросить журналы событий для содержимого сообщения в C #? - PullRequest
3 голосов
/ 03 февраля 2012

Меня интересует написание некоторого кода для запроса в журнале событий Windows содержимого определенного сообщения об ошибке , как описано в этой статье MSDN . Тем не менее, я не большой поклонник механики, в основном, ручного запуска XPATH или пользовательского представления событий в коде ... есть ли более простой способ сделать это? Возможно, провайдер LINQ?

Ответы [ 2 ]

3 голосов
/ 10 июня 2014

Возможно, кто-то найдет это полезным ...

Я использую LinqPad для запроса журнала событий безопасности на удаленной машине.Это работает немного медленно, но дает нужный мне результат.Я использую запрос:

EventLog elog = new EventLog();
elog.MachineName = "REMOTE MACHINE NAME";
elog.Log = "Security";
var query = 
    from EventLogEntry e in elog.Entries
    where e.EventID == 560 // EVENT CODE (FILE DELETION IN MY CASE)
    && e.UserName == @"DOMAIN\USERNAME"
    && e.Message.Contains("TEXT INSIDE THE MESSAGE")
    select e;

query.Dump();
2 голосов
/ 03 февраля 2012

Вы можете создать собственное представление в Event Viewer и скопировать сгенерированный XML. Схема точно такая же.

Другой вариант - читать события по одному и проверять их содержимое с помощью поиска строк, XPATH или LINQ to XML. Очевидно, что это не самое масштабируемое решение, особенно при запросах к удаленным серверам.

Google может найти некоторые примеры, которые, кажется, используют LINQ для запроса журнала событий, но на самом деле они просто перечисляют все записи. Похоже, не существует поставщика, который действительно преобразовал бы запрос LINQ в правильный XML и вернул бы результаты

...