2013-09-25 3 views
7

Ich möchte in der Lage sein, eine EventSource zu deklarieren, die ein Minimum von mehreren Methoden hat, die standardmäßig regelmäßige Protokollierungsfunktionen bereitstellen.Kann eine EventSource in ETW abgeleitet werden?

z.B.

  • Info()
  • Warn()
  • Fehler()

Außerdem würde Ich mag zu können, in jedem Dienst, eine bestimmte Ereignisquelle definieren, die von der erbt Basisklasse, die das oben genannte bereitstellt. Im Moment beschwert sich die EventRegister.exe App, die das Manifest erstellt, dass die Ereignisquelle versiegelt werden muss.

Mache ich das falsch? Wenn ja, wie kann ich das oben genannte erreichen? Siehe Beispielcode:

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

ich die neueste und beste Microsoft.Diagnostics.Tracing mit (vor), die ich für die Kanäle im Gegensatz zu den SLAB von Enterprise Library hat die Unterstützung verstehen.

+1

Microsoft.Diagnostics.Tracing (vor) erwartet, dass die Klasse versiegelt wird. Die Klasse, die EventSource erbt, muss versiegelt werden. Sie können Manifest nicht generieren, wenn Sie es nicht als versiegelt markieren. Ich bezweifle, dass das funktioniert. – KRP

+0

Wie teile ich gemeinsame Methoden über mehrere EventSources hinweg in einem breiten System? – jaffa

+0

Ich bin da nicht wirklich sicher, ich denke wir können das nicht machen. – KRP

Antwort

3

ETWBase sollte abstrakt sein und sollte keine von EventAttribute dekorierten Methoden haben.

Weitere Informationen finden Sie in der Dokumentationsdatei _EventSourceUsersGuide.docx, die zu Ihrem Projekt hinzugefügt wird, wenn Sie auf Event Source oder Event Source Samples nuget-Pakete verweisen.

Verwandte Themen