2013-09-25 1 views
7

기본적으로 정기적 인 로깅 기능을 제공하는 몇 가지 메소드 중 최소 하나를 갖는 EventSource를 선언 할 수 있기를 바랍니다.ETW에서 EventSource를 서브 클래스화할 수 있습니까?

  • 정보()
  • 은 (경고)
  • 오류() 각 서비스 내에서 상속 특정 이벤트 소스를 정의하는 것 외에도

내가 수 있도록하고 싶습니다 상기를 제공하는 기본 클래스. 현재 매니페스트를 만드는 EventRegister.exe 앱은 이벤트 소스를 봉인해야한다고 불평합니다.

내가 잘못 했나요? 그렇다면 어떻게해야 이상을 얻을 수 있습니까? 나는 엔터프라이즈 라이브러리에서 슬래브는 달리 채널에 대한 지원을하고 이해 최신의 그리고 최고의 Microsoft.Diagnostics.Tracing (사전)을 사용하고

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); }  
    } 

: 예제 코드를 참조하십시오.

+1

Microsoft.Diagnostics.Tracing (pre)은 클래스가 봉인 될 것으로 예상합니다. EventSource를 상속받은 클래스는 봉인되어야하며 봉인 된 것으로 표시하지 않으면 매니페스트를 생성 할 수 없습니다. 나는 이것이 효과가 있을지 의심 스럽다. – KRP

+0

넓은 시스템에서 여러 EventSources에 공통적 인 메소드를 공유하려면 어떻게해야합니까? – jaffa

+0

나는 그 앞에서 정말로 확신 할 수 없다. 나는 그것을 할 수 없다고 생각한다. – KRP

답변

3

ETWBase는 추상이어야하며 EventAttribute로 장식 된 메서드가 없어야합니다.

Event Source 또는 Event Source Samples 너겟 패키지를 참조하는 경우 프로젝트에 추가되는 문서 파일 _EventSourceUsersGuide.docx에서 더 많은 정보를 찾을 수 있습니다.

관련 문제