Ablaufverfolgungslistener

Wenn Sie mit Trace, Debug und TraceSource arbeiten, müssen Sie einen Mechanismus zum Sammeln und Aufzeichnen der gesendeten Meldungen einrichten. Ablaufverfolgungsmeldungen werden von Listenern empfangen. Der Zweck eines Listeners ist das Sammeln, Speichern und Weiterleiten von Ablaufverfolgungsmeldungen. Listener leiten die Ablaufverfolgungsausgabe an ein entsprechendes Ziel, beispielsweise ein Protokoll, ein Fenster oder eine Textdatei.

Listener stehen für die Klassen Debug, Trace und TraceSource zur Verfügung, von denen jede ihre Ausgabe an eine Vielzahl von Listenerobjekten senden kann. Im Folgenden werden die häufig verwendeten vordefinierten Listener aufgeführt:

  • Ein TextWriterTraceListener leitet die Ausgabe zu einer Instanz der TextWriter-Klasse oder zu einer beliebigen Stream-Klasse um. Das Schreiben in die Konsole oder in eine Datei ist auch möglich, da diese Stream-Klassen sind.

  • Ein EventLogTraceListener leitet die Ausgabe zu einem Ereignisprotokoll um.

  • Ein DefaultTraceListener gibt die Nachrichten Write und WriteLine an die OutputDebugString- und die Debugger.Log-Methode aus. Dies führt in Visual Studio dazu, dass die Debugging-Meldungen im Ausgabefenster angezeigt werden. Fail und fehlgeschlagene Assert-Meldungen werden auch an die OutputDebugString-Windows-API und die Debugger.Log-Methode ausgegeben, und darüber hinaus wird auch ein Meldungsfenster angezeigt. Dieses Verhalten ist das Standardverhalten für Meldungen von Debug und Trace, da DefaultTraceListener automatisch in jeder Listeners-Auflistung enthalten ist und es sich dabei um den einzigen automatisch eingebundenen Listener handelt.

  • Ein ConsoleTraceListener leitet eine Ablaufverfolgungs- oder Debuggingausgabe an die Standardausgabe oder den Standardfehlerstream weiter.

  • Ein DelimitedListTraceListener leitet eine Ablaufverfolgungs- oder Debuggingausgabe an einen Textwriter, z. B. einen Streamwriter, oder an einen Stream, z. B. einen Dateistream, weiter. Die Ablaufverfolgungsausgabe liegt in einem Textformat mit Trennzeichen vor, das das durch die Delimiter-Eigenschaft angegebene Trennzeichen verwendet.

  • Ein XmlWriterTraceListener leitet die Ablaufverfolgungs- oder Debuggingausgabe als XML-codierte Daten an einen TextWriter oder einen Stream, wie z. B. einen FileStream, weiter.

Wenn neben DefaultTraceListener jeder Listener die Ausgabe von Debug, Trace und TraceSource empfangen soll, müssen Sie diese der Listeners-Auflistung hinzufügen. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen und Initialisieren von Ablaufverfolgungslistenern und Vorgehensweise: Verwenden von TraceSource und Filtern für Ablaufverfolgungslistener. Alle Listener in der Listeners-Auflistung erhalten die gleichen Meldungen aus den Ablaufverfolgungsausgabemethoden. Nehmen wir beispielsweise an, dass Sie zwei Listener einrichten: TextWriterTraceListener und EventLogTraceListener. Jeder Listener empfängt die gleiche Meldung. Der Listener TextWriterTraceListener leitet seine Ausgabe an einen Datenstrom weiter, und der Listener EventLogTraceListener leitet seine Ausgabe an ein Ereignisprotokoll weiter.

Das folgende Beispiel zeigt, wie die Ausgabe an die Listeners-Auflistung gesendet wird.

' Use this example when debugging.  
Debug.WriteLine("Error in Widget 42")  
' Use this example when tracing.  
Trace.WriteLine("Error in Widget 42")  
// Use this example when debugging.  
System.Diagnostics.Debug.WriteLine("Error in Widget 42");  
// Use this example when tracing.  
System.Diagnostics.Trace.WriteLine("Error in Widget 42");  

„Debug“ und „Trace“ nutzen die gleiche Listeners-Auflistung. Wenn Sie also der Debug.Listeners-Auflistung in Ihrer Anwendung ein Listenerobjekt hinzufügen, wird dieses auch der Trace.Listeners-Auflistung hinzugefügt.

Das folgende Beispiel zeigt, wie ein Listener verwendet wird, um Ablaufverfolgungsinformationen an eine Konsole zu senden:

Trace.Listeners.Clear()  
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))  
System.Diagnostics.Trace.Listeners.Clear();  
System.Diagnostics.Trace.Listeners.Add(  
   new System.Diagnostics.TextWriterTraceListener(Console.Out));  

Entwicklerdefinierte Listener

Sie können eigene Listener durch Erben von der TraceListener-Basisklasse definieren und die dazugehörigen Methoden mit benutzerdefinierten Methoden überschreiben. Weitere Informationen zum Erstellen entwicklerdefinierter Listener finden Sie unter TraceListener in der Referenz zu .NET Framework.

Weitere Informationen