次の方法で共有


トレース リスナ

更新 : 2007 年 11 月

TraceDebug、および TraceSource を使用するときには、送信されたメッセージを収集して記録するための機構が必要です。トレース メッセージは "リスナ" によって受け取られます。リスナの目的は、トレース メッセージの収集、格納、およびルーティングを行うことです。リスナにより、トレース出力が適切な場所 (ログ、ウィンドウ、またはテキスト ファイル) に送られます。

リスナは、DebugTrace、および TraceSource の各クラスで使用できます。どのクラスも出力を各種のリスナ オブジェクトに送ることができます。3 種類の定義済みのリスナがあります。

  • TextWriterTraceListener は、TextWriter クラスのインスタンスまたは Stream クラスの任意の対象に出力をリダイレクトします。これらは Stream のクラスのため、このリスナはコンソールまたはファイルにも書き込むことができます。

  • EventLogTraceListener は、出力をイベント ログにリダイレクトします。

  • DefaultTraceListener は、Write メッセージと WriteLine メッセージを OutputDebugString メソッドと Debugger.Log メソッドに生成します。Visual Studio では、これによってデバッグ メッセージが出力ウィンドウに表示されます。Fail メッセージおよび失敗した Assert メッセージは、OutputDebugString Windows API および Debugger.Log メッセージにも生成され、メッセージ ボックスが表示されます。DefaultTraceListener はすべての Listeners コレクションに自動的に取り込まれる唯一のリスナのため、この動作は Debug メッセージと Trace メッセージの既定の動作になります。

  • ConsoleTraceListener は、トレース出力またはデバッグ出力を標準出力と標準エラー出力ストリームのいずれかに転送します。

  • DelimitedListTraceListener は、トレース出力またはデバッグ出力をストリーム ライタなどのテキスト ライタまたはファイル ストリームなどのストリームに転送します。トレース出力は、Delimiter に指定されるデリミタで区切られたテキスト形式になります。     

  • XmlWriterTraceListener は、トレース出力またはデバッグ出力を XML でエンコードされたデータとして TextWriter または Stream (FileStream など) に転送します。

DefaultTraceListener 以外のリスナが Debug 出力、Trace 出力、および TraceSource 出力を受け取るようにする場合は、目的のリスナを Listeners コレクションに追加する必要があります。詳細については、「方法 : トレース リスナを作成し初期化する」および「方法 : TraceSource とフィルタをトレース リスナと共に使用する」を参照してください。Listeners コレクションのすべてのリスナは、トレース出力のメソッドから同じメッセージを受け取ります。たとえば、TextWriterTraceListener および EventLogTraceListener という 2 つのリスナを設定したとします。各リスナは同一のメッセージを受け取ります。TextWriterTraceListener は出力をストリームに送り、EventLogTraceListener は出力をイベント ログに送ります。

出力を Listeners コレクションに送る方法を次の例に示します。

' 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");
// 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");

デバッグおよびトレースは、同じ Listeners コレクションを共有しています。したがって、リスナ オブジェクトをアプリケーションの Debug.Listeners コレクションに追加した場合は、Trace.Listeners コレクションにも追加されます。

トレース情報をコンソールに送る場合のリスナの使用方法を次の例に示します。

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));
System.Diagnostics.Trace.get_Listeners().Clear();
System.Diagnostics.Trace.get_Listeners().Add(
   new System.Diagnostics.TextWriterTraceListener(Console.get_Out()));

開発者が定義するリスナ

TraceListener 基本クラスから継承することにより、独自のリスナを定義し、カスタマイズされたメソッドで既存のメソッドをオーバーライドできます。開発者が定義するリスナの作成については、「.NET Framework リファレンス」の「TraceListener」を参照してください。

参照

概念

実装とトレースの概要

トレース スイッチ

参照

TextWriterTraceListener

EventLogTraceListener

DefaultTraceListener

TraceListener

その他の技術情報

アプリケーションのトレースとインストルメント