在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。
答案 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());
}