将 XML 数据放入 Windows 事件日志
如何将 XML 数据写入 Windows 事件日志?
我注意到有一种方法可以将 XML 插入到 Windows 事件日志中(而不仅仅是将其填充到描述中)。 效果是您在 Windows Vista 的常规
视图中仅获得描述消息。 您可以在详细信息
视图中查看您的XML数据。
如果您选择Friendly
单选按钮,它将出现在Event Data
节点下。 如果您选择 XML 视图,那么您将看到 XML。
我认为 EventLog.WriteEntry() 方法中的 rawData 字节数组可以让我做到这一点。 我尝试将 XMLWriter 的输出填充到其中。 它将数据放入事件日志中,但它被视为二进制而不是 XML。
How can I write XML data into the Windows Event Log?
I have noticed that there is a way to insert XML into the windows event log (and not by just stuffing it into the description). The effect is that you get just your description message in the General
view on Windows Vista. You can see your XML data in the Details
view.
If you select the Friendly
radio button, it appears under the Event Data
node. If you select the XML view, then you get to see the XML.
I thought that the rawData byte array in the EventLog.WriteEntry()
method would allow me to do this. I tried stuffing the output of XMLWriter into it. That put data into the event log, but it is viewed as binary instead of XML.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除非我弄错了,为了将 xml 写入 Crimson/Vista 事件日志,您将创建并注册一个清单,该清单将为您提供适当的通道和事件。 然后,您必须使用 WindowsSDK 中的消息编译器 (mc.exe)。
然后,如果您想从 C# 进行日志记录,您将需要创建一个托管提供程序来包装事件日志记录 API。 这有点困难,因为您必须使用 PInvoke 来获取 API。
此处有关于如何执行整个过程的博客文章。
Unless I am mistaken, in order to write xml to the Crimson/Vista event log you will have create and register a manifest that will give you the appropriate channels and events. Then you have to compile the manifest using the Message Compiler (mc.exe) in the WindowsSDK.
Then if you want to log from C# you will want to create a managed provider to wrap the event logging API. This is a little harder because you will have to use PInvoke to get at the API.
There are blog posts on how to do this whole process here.
您在 Windows 中有一个示例SDK(版本 6.1) 称为 EventProvider。
它是一个 C# 提供程序(需要 Vista 及更高版本才能工作),使用新的事件日志 API(又称为 crimson)。
此示例展示了如何添加自定义数据(以及其他数据)。
You have a sample in Windows SDK (ver 6.1) called EventProvider.
Its a C# provider (needs Vista and up to work) that uses the new Event log API (AKA crimson).
This sample show how to add custom data (amount other things).