以编程方式创建自定义事件日志视图

Programmatically create a custom Eventlog view

我想在 C# 应用程序中以编程方式创建自定义事件日志视图。

这是借助 Microsoft Windows 的事件日志应用程序创建自定义事件日志视图的方法:

我在 class System.Diagnostics.EventLog 中搜索了与 Microsoft 事件日志应用程序中的按钮功能相同的方法。遗憾的是,我找不到满足我需求的任何功能。

有没有人曾在 C# 中以编程方式创建自定义事件日志视图或知道有效的方法?

可能的解决方案是:

  1. 使用 eventvwr.msc 界面(显示在您提供的图片上)创建所需的自定义视图。
  2. 将它导出到一个 .xml 文件并且 study/make 对其结构的研究很少
  3. 根据您的需要编写代码生成这样的 .xml 文件,或者使用已经制作和导出的文件仅替换适当的 "placeholders"(事件代码、事件源等)
  4. 运行 eventvwr.exe 带有 /v 选项,例如 eventvwr.exe /v:MyView.xml(更多选项使用 eventvwr.exe /?

如果刚刚测试发现的方法here

try
{
    XmlTextWriter view = new XmlTextWriter("C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml", Encoding.Unicode);
    // Root.
    view.WriteStartDocument();
    view.WriteStartElement("ViewerConfig");
    //Create Node for queryConfig
    view.WriteStartElement("QueryConfig");
    view.WriteStartElement("QueryParams");
    view.WriteStartElement("UserQuery");
    view.WriteEndElement();
    view.WriteEndElement();
    //QueryNode
    view.WriteStartElement("QueryNode");
    //....

    view.Close();
}
catch (XmlException ex)
{
    Console.WriteLine(ex.StackTrace);
}

这为我创建了自定义视图。

基本上,自定义视图是存储在 C:\ProgramData\Microsoft\Event Viewer\Views\ 下的 xml 文件,您可以通过创建 xml 文档来滚动自己的文件。

如果您想知道如何格式化这样的 xml 文档,您可以随时回退到 C:\ProgramData\Microsoft\Event Viewer\Views\ServerRoles

下的服务器角色文件夹中已经预定义的查询