Teilen über


Protokollierungslistener

Hinweis

Dieser Artikel ist spezifisch für .NET Framework. Sie gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.

Bei Verwendung von Trace, Debug und TraceSource, müssen Sie über einen Mechanismus zum Sammeln und Aufzeichnen der gesendeten Nachrichten verfügen. 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 sind für die Debug-, Ablaufverfolgungs- und TraceSource Klassen verfügbar, von denen jede die Ausgabe an eine Vielzahl von Listenerobjekten senden kann. Im Folgenden werden die häufig verwendeten vordefinierten Listener aufgeführt:

  • Eine TextWriterTraceListener leitet die Ausgabe an eine Instanz der TextWriter-Klasse oder an eine beliebige Stream-Klasse um. Sie kann auch in die Konsole oder in eine Datei schreiben, da es sich hierbei um Klassen handelt Stream .

  • Ein EventLogTraceListener leitet die Ausgabe zu einem Ereignisprotokoll um.

  • Ein DefaultTraceListener sendet Write- und WriteLine-Nachrichten an die OutputDebugString- und die Debugger.Log-Methode. In Visual Studio werden dadurch die Debugmeldungen im Ausgabefenster angezeigt. 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 Debug- und Trace-Meldungen, da DefaultTraceListener automatisch in jeder Listeners Auflistung enthalten ist und als einziger Listener automatisch enthalten ist.

  • 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 So erstellen und initialisieren Sie Trace-Listener und So verwenden Sie TraceSource und Filter mit Trace-Listenern. Alle Listener in der Listeners-Auflistung erhalten die gleichen Meldungen aus den Ablaufverfolgungsausgabemethoden. Angenommen, Sie richten zwei Listener ein: einen TextWriterTraceListener und einen EventLogTraceListener. Jeder Listener empfängt dieselbe Nachricht. Der TextWriterTraceListener leitet die Ausgabe in einen Datenstrom weiter, und der EventLogTraceListener leitet die Ausgabe in ein Ereignisprotokoll weiter.

Das folgende Beispiel zeigt, wie die Ausgabe an die Listeners-Sammlung 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 verwenden dieselbe Listeners-Sammlung. Wenn Sie einer Debug.Listeners-Sammlung in Ihrer Anwendung ein Listenerobjekt hinzufügen, wird es auch der Trace.Listeners-Sammlung 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 Ihre eigenen Listener definieren, indem Sie von der TraceListener-Basisklasse erben und ihre Methoden mit Ihren angepassten Methoden überschreiben. Weitere Informationen zum Erstellen entwicklerdefinierter Listener finden Sie TraceListener in der .NET Framework-Referenz.

Siehe auch