デバッグ・メッセージをコンソールに出力するには?.NET TIPS

» 2004年04月02日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 「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

デバッグ・メッセージを出力するC#のコンソール・アプリケーション(debugoncon.cs)
debugoncon.csのダウンロード

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。