2013-09-25 64 views
7

我希望能够声明一个EventSource,它至少有几个默认提供常规日志功能的方法。是否可以在ETW中继承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); }  
    } 

我使用的是最新和最伟大的Microsoft.Diagnostics.Tracing(前)我的理解有来自不同企业库平板电视的支持。

+1

Microsoft.Diagnostics.Tracing(pre)期望该类被封闭。继承EventSource的类需要密封,如果不标记为密封,则不能生成清单。我怀疑这是否会奏效。 – KRP

+0

如何跨多个系统共享多个事件源的通用方法? – jaffa

+0

我并不确定在那方面,我认为我们不能那样做。 – KRP

回答

3

ETWBase应该是抽象的,不应该有由EventAttribute装饰的方法。

如果您正在参考Event SourceEvent Source Samples nuget软件包,可以在正在添加到项目中的文档文件_EventSourceUsersGuide.docx中找到更多信息。

相关问题