Сериализация экземпляра.NET EventLogEntry в XML

При использовании средства просмотра событий в 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 не поддерживает развертывание в Windows Server 2003/ XP.

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

1 ответ

Решение

Вы должны использовать пространство имен 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());
}
Другие вопросы по тегам