Сериализация экземпляра .NET EventLogEntry в XML - PullRequest
1 голос
/ 26 октября 2009

При использовании средства просмотра событий в Windows 7 существует отдельное «представление XML» события, доступ к которому можно получить из диалогового окна «Свойства события». Этот XML относится к пространству имен http://schemas.microsoft.com/win/2004/08/events/event.

Когда я подписываюсь на События Windows с использованием классов .NET Framework в пространстве имен System.Diagnostics и извлекаю объекты событий в виде экземпляров EventLogEntry, есть ли способ сериализации этих экземпляров в формате XML, упомянутом выше? Кажется, я не могу их найти.

Большое спасибо за ваш ответ.

Обновление : благодаря jmservera я обнаружил, что в пространстве имен System.Diagnostics.Eventing.Reader есть другой и лучший API, однако этот API не поддерживает развертывание в Windows Server 2003 / XP.

Обновление 2 : Я принял ответ jmservera, потому что он привел меня к решению. Если вы ориентируетесь на Vista / Windows Server 2008, следуйте предложению jmservera и используйте API в более новом пространстве имен. Однако, если вам требуется поддержка предыдущих ОС, вам придется использовать более старый API и сериализовать EventLogEntry в XML самостоятельно.

1 Ответ

3 голосов
/ 26 октября 2009

Вы должны использовать пространство имен System.Diagnostics.Eventing.Reader, например:

static void Main(string[] args)
{
 EventLogQuery query = new EventLogQuery("System", PathType.LogName);
 EventLogWatcher watcher = new EventLogWatcher(query);
 watcher.EventRecordWritten += new EventHandler<EventRecordWrittenEventArgs>(watcher_EventRecordWritten);
 watcher.Enabled = true;
 Console.ReadLine();
}

static void watcher_EventRecordWritten(object sender, EventRecordWrittenEventArgs e)
{
 Console.WriteLine(e.EventRecord.ToXml());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...