Сериализация экземпляра.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());
}