EventSource中的频道名称

时间:2018-12-22 11:16:48

标签: c# events tracing system.diagnostics etw

我有一个编写一些ETW事件的应用程序。使用特定名称创建事件提供程序,例如:

[EventSource(Name = "Test-SourceLogger")]
public class EventSourceLogger : EventSource

然后我在此日志中有各种事件,其中记录了一些数据。此外,日志是通过在上面创建自定义跟踪侦听器的跟踪写入的。然后,此侦听器将编写事件。

现在,我想在事件查看器中查看这些事件,但找不到。基本上,查看器中的左窗格选项都不显示日志。我搜索了一下,看来我们在某处必须在注册提供程序时在检测清单中指定通道。我使用的是.NET 4.5框架,因此无需显式注册提供程序。

  • 是否需要指定频道名称?
  • 如何查看我的日志? 事件查看器,以防我没有?没有任何默认频道 他们被推到哪里?
  • 我尝试通过perfview查看事件,我 查看我的应用程序的事件。转储事件的xml时,我看到了 channel属性设置为0。如何查看名称 对应每个频道号?

1 个答案:

答案 0 :(得分:1)

您需要像这样设置Event属性的Channel属性:

[EventSource(Name = "Samples-EventSourceDemos-EventLog")]
public sealed class MinimalEventSource : EventSource
{
    public static MinimalEventSource Log = new MinimalEventSource();
    [Event(601, Channel = EventChannel.Admin,  Message = "Unhandled exception occurred. Details: {0}", Keywords = EventKeywords.None, Level = EventLevel.Critical)]
    private void UnhandledException(string exceptionMsg)
    {
        this.IsEnabled().Dump();
        this.WriteEvent(601, exceptionMsg);
    }
}

频道0表示无,请参见docs

  

Admin 16管理员日志通道。
  Analytic 18分析渠道。
  调试19调试通道。
  无0未指定频道。
  运营17运营渠道。

但是,AFAIK,您仍然需要注册事件源,请参见this doc