.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のメモ帳で、その内容を確認することができる。End of Article

カテゴリ:クラス・ライブラリ 処理対象:デバッグ&トレース
使用ライブラリ:Debugクラス(System.Diagnostics名前空間)
使用ライブラリ:DefaultTraceListenerクラス(System.Diagnostics名前空間)
関連TIPS:デバッグ・メッセージをコンソールに出力するには?
関連TIPS:
VS.NETでデバッグ・メッセージを出力するには?
 
この記事と関連性の高い別の.NET TIPS
デバッグ・メッセージをコンソールに出力するには?
VS.NETでデバッグ・メッセージを出力するには?
LINQ to SQLのログ出力をVisual Studioの[出力]ウィンドウに出力するには?
LINQ to SQLにより生成されるSQL文を確認するには?
using文による名前空間の指定を自動的に記述するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間