この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「TIPS:VS.NETでデバッグ・メッセージを出力するには?」で解説しているように、Debugクラス(System.Diagnostics名前空間)によるデバッグ・メッセージの出力は、Visual Studio .NETの使用時にはVS.NETの[出力]ウィンドウに出力される。
しかし、Visual Studio .NETではなくコマンド・プロンプトでコンソール・アプリケーションのプログラミングを行っている場合には、Debugクラスによる出力を表示することができない。このような場合には、Debugクラスに「リスナ」を追加することにより、コンソール(標準出力)やファイルなどにもメッセージを出力することができる。
Debugクラスで使用されるリスナ(Listener)とは、Debugクラスからデバッグ・メッセージを受け取って、それをコンソール(標準出力)やファイルなどに出力するオブジェクトのことである。
具体的には、リスナはTraceListenerクラス(System.Diagnostics名前空間)を継承したクラスのオブジェクトであり、クラス・ライブラリには、受け取ったメッセージをファイルやコンソールに書き込むTextWriterTraceListenerクラス、Windowsのイベント・ログに書き込むEventLogTraceListenerクラスなどが用意されている。
一方、DebugクラスはListenersプロパティのコレクションにより、複数のリスナを登録することができる。そして、WriteメソッドやWriteLineメソッドによりメッセージが出力される場合には、Listenersプロパティに登録されているすべてのリスナに対して、そのメッセージが出力される仕組みとなっている。
コンソールにデバッグ・メッセージを出力するには、前出のTextWriterTraceListenerクラスのコンストラクタで標準出力のストリームを指定してリスナを生成し、それをDebugクラスのListenersプロパティに追加すればよい(この設定はプログラムの最初に1度だけ行えばよい)。これを行っているサンプル・プログラムを次に示す。
// debugoncon.cs
using System;
using System.Diagnostics;
public class DebugOnConsole {
static void Main() {
Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
Debug.WriteLine("デバッグ・メッセージを出力");
}
}
// コンパイル方法:csc /d:DEBUG debugoncon.cs
Copyright© Digital Advantage Corp. All Rights Reserved.