AblaufverfolgungslistenerTrace Listeners

Wenn Sie mit Trace, Debug und TraceSource arbeiten, müssen Sie einen Mechanismus zum Sammeln und Aufzeichnen der gesendeten Meldungen einrichten.When using Trace, Debug and TraceSource, you must have a mechanism for collecting and recording the messages that are sent. Ablaufverfolgungsmeldungen werden von Listenern empfangen.Trace messages are received by listeners. Der Zweck eines Listeners ist das Sammeln, Speichern und Weiterleiten von Ablaufverfolgungsmeldungen.The purpose of a listener is to collect, store, and route tracing messages. Listener leiten die Ablaufverfolgungsausgabe an ein entsprechendes Ziel, beispielsweise ein Protokoll, ein Fenster oder eine Textdatei.Listeners direct the tracing output to an appropriate target, such as a log, window, or text file.

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.Listeners are available to the Debug, Trace, and TraceSource classes, each of which can send its output to a variety of listener objects. Im Folgenden werden die häufig verwendeten vordefinierten Listener aufgeführt:The following are the commonly used predefined listeners:

  • Ein TextWriterTraceListener leitet die Ausgabe zu einer Instanz der TextWriter-Klasse oder zu einer beliebigen Stream-Klasse um.A TextWriterTraceListener redirects output to an instance of the TextWriter class or to anything that is a Stream class. Das Schreiben in die Konsole oder in eine Datei ist auch möglich, da diese Stream-Klassen sind.It can also write to the console or to a file, because these are Stream classes.

  • Ein EventLogTraceListener leitet die Ausgabe zu einem Ereignisprotokoll um.An EventLogTraceListener redirects output to an event log.

  • Ein DefaultTraceListener gibt die Nachrichten Write und WriteLine an die OutputDebugString- und die Debugger.Log-Methode aus.A DefaultTraceListener emits Write and WriteLine messages to the OutputDebugString and to the Debugger.Log method. Dies führt in Visual Studio dazu, dass die Debugging-Meldungen im Ausgabefenster angezeigt werden.In Visual Studio, this causes the debugging messages to appear in the Output window. 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.Fail and failed Assert messages also emit to the OutputDebugString Windows API and the Debugger.Log method, and also cause a message box to be displayed. 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.This behavior is the default behavior for Debug and Trace messages, because DefaultTraceListener is automatically included in every Listeners collection and is the only listener automatically included.

  • Ein ConsoleTraceListener leitet eine Ablaufverfolgungs- oder Debuggingausgabe an die Standardausgabe oder den Standardfehlerstream weiter.A ConsoleTraceListener directs tracing or debugging output to either the standard output or the standard error stream.

  • Ein DelimitedListTraceListener leitet eine Ablaufverfolgungs- oder Debuggingausgabe an einen Textwriter, z. B. einen Streamwriter, oder an einen Stream, z. B. einen Dateistream, weiter.A DelimitedListTraceListener directs tracing or debugging output to a text writer, such as a stream writer, or to a stream, such as a file stream. Die Ablaufverfolgungsausgabe liegt in einem Textformat mit Trennzeichen vor, das das durch die Delimiter-Eigenschaft angegebene Trennzeichen verwendet.The trace output is in a delimited text format that uses the delimiter specified by the Delimiter property.

  • Ein XmlWriterTraceListener leitet die Ablaufverfolgungs- oder Debuggingausgabe als XML-codierte Daten an einen TextWriter oder einen Stream, wie z. B. einen FileStream, weiter.An XmlWriterTraceListener directs tracing or debugging output as XML-encoded data to a TextWriter or to a Stream, such as a FileStream.

Wenn neben DefaultTraceListener jeder Listener die Ausgabe von Debug, Trace und TraceSource empfangen soll, müssen Sie diese der Listeners-Auflistung hinzufügen.If you want any listener besides the DefaultTraceListener to receive Debug, Trace and TraceSource output, you must add it to the Listeners collection. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen und Initialisieren von Ablaufverfolgungslistenern und Vorgehensweise: Verwenden von TraceSource und Filtern für Ablaufverfolgungslistener.For more information, see How to: Create and Initialize Trace Listeners and How to: Use TraceSource and Filters with Trace Listeners. Alle Listener in der Listeners-Auflistung erhalten die gleichen Meldungen aus den Ablaufverfolgungsausgabemethoden.Any listener in the Listeners collection gets the same messages from the trace output methods. Nehmen wir beispielsweise an, dass Sie zwei Listener einrichten: TextWriterTraceListener und EventLogTraceListener.For example, suppose you set up two listeners: a TextWriterTraceListener and an EventLogTraceListener. Jeder Listener empfängt die gleiche Meldung.Each listener receives the same message. Der Listener TextWriterTraceListener leitet seine Ausgabe an einen Datenstrom weiter, und der Listener EventLogTraceListener leitet seine Ausgabe an ein Ereignisprotokoll weiter.The TextWriterTraceListener would direct its output to a stream, and the EventLogTraceListener would direct its output to an event log.

Das folgende Beispiel zeigt, wie die Ausgabe an die Listeners-Auflistung gesendet wird.The following example shows how to send output to the Listeners collection.

' 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.Debug and trace share the same Listeners collection, so if you add a listener object to a Debug.Listeners collection in your application, it gets added to the Trace.Listeners collection as well.

Das folgende Beispiel zeigt, wie ein Listener verwendet wird, um Ablaufverfolgungsinformationen an eine Konsole zu senden:The following example shows how to use a listener to send tracing information to a console:

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 ListenerDeveloper-Defined Listeners

Sie können eigene Listener durch Erben von der TraceListener-Basisklasse definieren und die dazugehörigen Methoden mit benutzerdefinierten Methoden überschreiben.You can define your own listeners by inheriting from the TraceListener base class and overriding its methods with your customized methods. Weitere Informationen zum Erstellen entwicklerdefinierter Listener finden Sie unter TraceListener in der Referenz zu .NET Framework. For more information on creating developer-defined listeners, see TraceListener in the .NET Framework reference.

Siehe auchSee also