是否有可能在ETW中继承EventSource?

jaf*_*ffa 7 .net system.diagnostics etw etw-eventsource

我希望能够声明一个EventSource,它至少有几种方法,默认情况下提供常规的日志记录工具.

例如

  • 信息()
  • 警告()
  • 错误()

此外,我希望能够在每个服务中定义一个特定的事件源,该事件源继承自提供上述内容的基类.目前,创建清单的EventRegister.exe应用程序抱怨必须密封事件源.

我做错了吗?如果是这样,我怎样才能实现上述目标?查看示例代码:

    public class ETWBase : EventSource
    {
        [Event(1, Channel = EventChannel.Admin, Message = "Info Message: {0}")]
        public void Info(string message) { this.WriteEvent(1); }

        [Event(2, Channel = EventChannel.Debug, Message = "Debug Message: {0}")]
        public void Trace(string message) { this.WriteEvent(2); }

    }

    [EventSource(Name = "ABC-MyEtwServiceEventSource")]
    public sealed class MyEtwServiceEventSource : ETWBase
    {
        public static MyEtwServiceEventSource Log = new MyEtwServiceEventSource();

        [Event(3, Channel = EventChannel.Debug, Message = "My specific Message: {0}")]
        public void Trace(string message) { this.WriteEvent(3); }       
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用最新和最好的Microsoft.Diagnostics.Tracing(pre),我理解它支持Channels,而不像企业库中的SLAB.

Ser*_*kov 3

ETWBase 应该是抽象的,并且不应具有由 EventAttribute 修饰的方法。

_EventSourceUsersGuide.docx如果您引用事件源事件源示例nuget 包,您可以在添加到项目的文档文件中找到更多信息。