|
.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 記事ランキング
本日
月間