Vorgehensweise: Erstellen und Initialisieren von Ablaufverfolgungslistenern

Die Klassen System.Diagnostics.Debug und System.Diagnostics.Trace senden Nachrichten an Objekte, die Listener genannt werden, welche diese Meldungen empfangen und verarbeiten. Ein solcher Listener, der System.Diagnostics.DefaultTraceListener, wird bei Aktivierung der Ablaufverfolgung oder des Debuggens automatisch erstellt und initialisiert. Wenn die Trace- oder Debug-Ausgabe an zusätzliche Quellen geleitet werden soll, müssen Sie zusätzliche Ablaufverfolgungslistener erstellen und initialisieren.

Erstellen Sie Listener, die auf die Anforderungen Ihrer Anwendung abgestimmt sind. Wenn Sie ein Textprotokoll der gesamten Ablaufverfolgungsausgabe brauchen, erstellen Sie einen TextWriterTraceListener-Listener, der die gesamte Ausgabe in eine neue Textdatei schreibt, sobald er aktiviert wird. Wenn Sie die Ausgabe nur während der Anwendungsausführung anzeigen möchten, erstellen Sie einen ConsoleTraceListener-Listener, der die gesamte Ausgabe an ein Konsolenfenster leitet. Der EventLogTraceListener kann die Ablaufverfolgungsausgabe an ein Ereignisprotokoll leiten. Weitere Informationen finden Sie unter Ablaufverfolgungslistener.

Sie können Ablaufverfolgungslistener in einer Anwendungskonfigurationsdatei oder im Code erstellen. Wir empfehlen die Verwendung von Anwendungskonfigurationsdateien, da Sie mit diesen Dateien Ablaufverfolgungslistener hinzufügen, ändern oder entfernen können, ohne den Code ändern zu müssen.

So erstellen und verwenden Sie einen Ablaufverfolgungslistener mithilfe einer Konfigurationsdatei

  1. Deklarieren Sie den Ablaufverfolgungslistener in der Anwendungskonfigurationsdatei. Wenn der Listener, den Sie erstellen, andere Objekte benötigt, deklarieren Sie diese ebenfalls. Das folgende Beispiel zeigt, wie ein Listener mit der Bezeichnung myListener erstellt wird, der in die Textdatei TextWriterOutput.log schreibt.

    <configuration>
      <system.diagnostics>
        <trace autoflush="false" indentsize="4">
          <listeners>
            <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" />
            <remove name="Default" />
          </listeners>
        </trace>
      </system.diagnostics>
    </configuration>
    
  2. Verwenden Sie die Trace-Klasse im Code, um eine Meldung in die Ablaufverfolgungslistener zu schreiben.

    Trace.TraceInformation("Test message.")
    ' You must close or flush the trace to empty the output buffer.
    Trace.Flush()
    
    Trace.TraceInformation("Test message.");
    // You must close or flush the trace to empty the output buffer.
    Trace.Flush();
    

So erstellen und verwenden Sie einen Ablaufverfolgungslistener im Code

  • Fügen Sie den Ablaufverfolgungslistener der Listeners-Auflistung hinzu, und senden Sie die Ablaufverfolgungsinformationen an die Listener.

    Trace.Listeners.Add(New TextWriterTraceListener("TextWriterOutput.log", "myListener"))
    Trace.TraceInformation("Test message.")
    ' You must close or flush the trace to empty the output buffer.
    Trace.Flush()
    
    Trace.Listeners.Add(new TextWriterTraceListener("TextWriterOutput.log", "myListener"));
    Trace.TraceInformation("Test message.");
    // You must close or flush the trace to empty the output buffer.
    Trace.Flush();
    

    - oder -

  • Wenn Sie nicht möchten, dass der Listener die Ablaufverfolgungsausgabe empfängt, fügen Sie diesen nicht zur Listeners-Auflistung hinzu. Sie können die Ausgabe über einen Listener unabhängig von der Listeners-Auflistung durch Aufrufen der eigenen Ausgabemethoden des Listeners ausgeben. Im folgenden Beispiel wird gezeigt, wie eine Zeile in einen Listener geschrieben wird, der nicht in der Listeners-Auflistung vorhanden ist.

    Dim myListener As New TextWriterTraceListener("TextWriterOutput.log", "myListener")
    myListener.WriteLine("Test message.")
    ' You must close or flush the trace listener to empty the output buffer.
    myListener.Flush()
    
    TextWriterTraceListener myListener = new TextWriterTraceListener("TextWriterOutput.log", "myListener");
    myListener.WriteLine("Test message.");
    // You must close or flush the trace listener to empty the output buffer.
    myListener.Flush();
    

Weitere Informationen