方法: トレース リスナーを作成し初期化する

Note

この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含め、.NET の新しい実装には適用されません。

System.Diagnostics.Debug クラスと System.Diagnostics.Trace クラスは、メッセージの受け取りと処理を実行する、リスナーと呼ばれるオブジェクトにメッセージを送ります。 トレースまたはデバッグを有効にすると、こうしたリスナーの 1 つである System.Diagnostics.DefaultTraceListener が自動的に作成および初期化されます。 Trace または Debug の出力を別のソースに送るには、別のトレース リスナーを作成して初期化する必要があります。

作成するリスナーには、アプリケーションのニーズが反映されている必要があります。 たとえば、すべてのトレース出力のテキスト レコードが必要である場合は、有効になったときにすべての出力を新しいテキスト ファイルに書き込む TextWriterTraceListener リスナーを作成します。 一方、アプリケーションの実行時にのみ出力を表示する場合は、すべての出力をコンソール ウィンドウに送る ConsoleTraceListener リスナーを作成します。 EventLogTraceListener は、トレース出力をイベント ログに転送することができます。 詳細については、「トレース リスナー」を参照してください。

トレース リスナーは、アプリケーション構成ファイルまたはコードで作成できます。 アプリケーション構成ファイルではコードを変更せずにトレース リスナーを追加、変更、または削除できるので、アプリケーション構成ファイルを使用することをお勧めします。

構成ファイルを使用してトレース リスナーを作成して使用するには

  1. アプリケーション構成ファイルでトレース リスナーを宣言します。 作成しているリスナーで他のオブジェクトが必要な場合は、必要なオブジェクトも宣言します。 テキスト ファイル TextWriterOutput.log への書き込みを実行する myListener というリスナーの作成方法を次の例に示します。

    <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 クラスを使用して、メッセージをトレース リスナーに書き込みます。

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

コードでトレース リスナーを作成して使用するには

  • トレース リスナーを Listeners コレクションに追加し、トレース情報をリスナーに送ります。

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

    - または -

  • リスナーがトレース出力を受け取らないようにするには、リスナーを Listeners コレクションに追加しないようにします。 リスナー自体の出力メソッドを呼び出すことにより、Listeners コレクションから独立したリスナーを通じて出力を生成できます。 Listeners コレクションに属さないリスナーに行を書き込む方法を次の例に示します。

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

関連項目