トレース リスナー
Trace、Debug、および TraceSource を使用するときには、送信されたメッセージを収集して記録するための機構が必要です。 トレース メッセージは "リスナー" によって受け取られます。 リスナーの目的は、トレース メッセージの収集、格納、およびルーティングを行うことです。 リスナーにより、トレース出力が適切な場所 (ログ、ウィンドウ、またはテキスト ファイル) に送られます。
リスナーは、Debug、Trace、および TraceSource の各クラスで使用できます。どのクラスも出力を各種のリスナー オブジェクトに送ることができます。 一般的に使用される定義済みのリスナーは、次のとおりです。
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");
デバッグおよびトレースは、同じ 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));
開発者が定義するリスナー
TraceListener 基本クラスから継承することにより、独自のリスナーを定義し、カスタマイズされたメソッドで既存のメソッドをオーバーライドできます。 開発者が定義するリスナーの作成については、「.NET Framework リファレンス」の「TraceListener」を参照してください。