Porady: tworzenie i inicjowanie obiektów nasłuchujących śledzenia

Klasy System.Diagnostics.Debug i System.Diagnostics.Trace wysyłają komunikaty do obiektów nazywanych odbiornikami, które odbierają i przetwarzają te komunikaty. Jeden z takich odbiorników, , System.Diagnostics.DefaultTraceListenerjest automatycznie tworzony i inicjowany podczas śledzenia lub debugowania jest włączony. Jeśli chcesz Trace lub Debug dane wyjściowe mają być kierowane do jakichkolwiek dodatkowych źródeł, musisz utworzyć i zainicjować dodatkowe odbiorniki śledzenia.

Utworzone odbiorniki powinny odzwierciedlać potrzeby aplikacji. Jeśli na przykład chcesz uzyskać rekord tekstowy wszystkich danych wyjściowych śledzenia, utwórz TextWriterTraceListener odbiornik, który zapisuje wszystkie dane wyjściowe w nowym pliku tekstowym po włączeniu. Z drugiej strony, jeśli chcesz wyświetlić dane wyjściowe tylko podczas wykonywania aplikacji, utwórz ConsoleTraceListener odbiornik, który kieruje wszystkie dane wyjściowe do okna konsoli. Może EventLogTraceListener kierować dane wyjściowe śledzenia do dziennika zdarzeń. Aby uzyskać więcej informacji, zobacz Śledzenie odbiorników.

Odbiorniki śledzenia można tworzyć w pliku konfiguracji aplikacji lub w kodzie. Zalecamy użycie plików konfiguracji aplikacji, ponieważ umożliwiają one dodawanie, modyfikowanie lub usuwanie odbiorników śledzenia bez konieczności zmiany kodu.

Aby utworzyć i użyć odbiornika śledzenia przy użyciu pliku konfiguracji

  1. Zadeklaruj odbiornik śledzenia w pliku konfiguracji aplikacji. Jeśli tworzony odbiornik wymaga innych obiektów, zadeklaruj je również. W poniższym przykładzie pokazano, jak utworzyć odbiornik o nazwie myListener , który zapisuje w pliku TextWriterOutput.logtekstowym .

    <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. Trace Użyj klasy w kodzie, aby napisać komunikat do odbiorników śledzenia.

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

Aby utworzyć i użyć odbiornika śledzenia w kodzie

  • Dodaj odbiornik śledzenia do Listeners kolekcji i wyślij informacje śledzenia do odbiorników.

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

    - lub -

  • Jeśli nie chcesz, aby odbiornik odbierał dane wyjściowe śledzenia, nie dodawaj Listeners go do kolekcji. Dane wyjściowe można emitować za pośrednictwem odbiornika niezależnie od Listeners kolekcji, wywołując własne metody wyjściowe odbiornika. W poniższym przykładzie pokazano, jak napisać wiersz do odbiornika, który nie znajduje się w Listeners kolekcji.

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

Zobacz też