トレース リスナー
Note
この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含め、.NET の新しい実装には適用されません。
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」を参照してください。
関連項目
.NET