|   | 
| 
 .NET TIPS 
デバッグ・メッセージをファイルに出力するには?
デジタルアドバンテージ 
2004/04/09 | 
  | 
 
 | 
   Debugクラス(System.Diagnostics名前空間)を使ってデバッグ・メッセージをファイルに出力するには、「TIPS:デバッグ・メッセージをコンソールに出力するには?」の最後にあるように、ファイルに対するストリームからTextWriterTraceListenerオブジェクト(リスナと呼ばれる)を生成し、DebugクラスのListenersプロパティに追加すればよい。しかし、出力先となるファイル名を指定するだけの、より簡単な方法も用意されている。
デフォルトのリスナであるDefaultTraceListenerオブジェクト
 Debugクラスでは、Listenersプロパティに登録されたリスナがデバッグ・メッセージを受け取り、それをファイルやイベント・ログなどに出力するわけだが、Listenersプロパティには最初から登録されているリスナが1つある(初期状態でDebug.Listeners.Countの値を表示させると「1」になるはずだ)。このデフォルトで登録されているリスナは、DefaultTraceListenerクラス(System.Diagnostics名前空間)のオブジェクトである。
 「TIPS:VS.NETでデバッグ・メッセージを出力するには?」では、リスナを明示的に追加していなくても、Debugクラスによるメッセージが[出力]ウィンドウに出力される様子を示しているが、実はこれは、このデフォルトのリスナによるものだ。デフォルトのリスナはデバッグ・メッセージを受け取ると、それをデバッガに出力する機能を持っている。この機能に加え、デフォルトのリスナには受け取ったメッセージをファイルに出力する機能も実装されている。これを利用するには、LogFileNameプロパティにデバッグ・メッセージの出力先となるファイル名を指定するだけでよい。
デバッグ・メッセージをファイルに出力するサンプル・プログラム
 デフォルトのリスナを使用して、デバッグ・メッセージをファイルに出力するサンプル・プログラムを以下に示す。デフォルトのリスナには、「Default」という名前が付けられており(Nameプロパティ)、DebugクラスのListenersプロパティからはインデクサ(VB.NETでは既定のプロパティ)にこの名前を指定して、そのオブジェクトを得ることができる。
// debugonfile.cs 
 
using System; 
using System.Diagnostics; 
 
public class DebugOnFile { 
  static void Main() { 
 
    DefaultTraceListener dtl 
      = (DefaultTraceListener)Debug.Listeners["Default"]; 
    dtl.LogFileName = @"c:\debug.txt"; 
 
    Debug.WriteLine("デバッグ・メッセージを出力"); 
  } 
} 
 
// コンパイル方法:csc /d:DEBUG debugonfile.cs 
 | 
 
 
 | 
 
| デバッグ・メッセージをファイルに出力するC#のコンソール・アプリケーション(debugonfile.cs) | 
| 
 | 
 
' debugonfile.vb 
 
Imports System 
Imports System.Diagnostics 
 
Class DebugOnFile 
  Shared Sub Main() 
 
    Dim dtl As DefaultTraceListener _ 
      = CType(Trace.Listeners("Default"), DefaultTraceListener) 
    dtl.LogFileName = "c:\debug.txt" 
 
    Debug.WriteLine("デバッグ・メッセージを出力") 
  End Sub 
End Class 
 
' コンパイル方法:vbc /r:System.dll /d:DEBUG=1 debugonfile.vb 
 | 
 
 
 | 
 
| デバッグ・メッセージをファイルに出力するVB.NETのコンソール・アプリケーション(debugonfile.vb) | 
| 
 | 
 「TIPS:デバッグ・メッセージをコンソールに出力するには?」にあるサンプル・プログラムと同様に、Debugクラスによる処理を有効にするためには、DEBUGシンボルを定義しておく必要がある。
 LogFileNameプロパティの初期値は空の文字列である。この場合には、メッセージはファイルには出力されない。また、出力先のファイルは、指定した名前のファイルが存在しなければ新規作成され、すでに存在する場合にはそのファイルにメッセージが追記される。なお、ファイルで使用される文字コードはUTF-8である。Windowsのメモ帳で、その内容を確認することができる。
 
 
|  
 | 
 
generated by  
 | 
 
 
 | 
 
 
	
		Insider.NET 記事ランキング
		
		
			本日
			月間