将.NET EventLogEntry实例序列化为XML

时间:2009-10-26 14:33:17

标签: .net xml events

在Windows 7中使用事件查看器时,可以从“事件属性”对话框中单独访问事件的“XML视图”。此XML引用http://schemas.microsoft.com/win/2004/08/events/event命名空间。

当我使用System.Diagnostics命名空间中的.NET框架类订阅Windows事件并以EventLogEntry实例的形式检索事件对象时,有没有办法将这些实例序列化为XML格式上文提到的?我似乎无法找到任何。

非常感谢您的回复。

更新:感谢jmservera我发现System.Diagnostics.Eventing.Reader命名空间中有一个不同且更好的API,但是这个API不支持部署到Windows Server 2003 / XP。 / p>

更新2 :我接受了jmservera的回答,因为它引导我找到解决方案。如果您要定位Vista / Windows Server 2008,请遵循jmservera的建议,并在较新的命名空间中使用API​​。但是,如果您需要支持以前的操作系统,则必须使用旧的API并自行将EventLogEntry序列化为XML。

1 个答案:

答案 0 :(得分:3)

您必须使用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());
}