C#でログを出力したいときにDebugViewを使用すると便利。このアプリケーションを開いているときだけログが表示されるので、問題なければリリース用の実行バイナリでもそのまま使用することができる。
DebugView for Windows
http://technet.microsoft.com/ja-JP/sysinternals/bb896647.aspx
usingの追加
using System.Diagnostics;
使い方は簡単。Debug.WriteLine()かTrace.WriteLine()で表示する事ができる。
private void button1_Click(object sender, EventArgs e) { Trace.WriteLine("Button1 Click"); } private void button2_Click(object sender, EventArgs e) { Trace.WriteLine("Button2 Click"); }
DebugViewの実行画面
以下、Trace文の便利な使い方。
VisualStudioでのデバッグ時にイミディエイトウィンドウを使用する
VisualStudioのオプションでイミディエイトウィンドウにデバッグ文を表示させることができる。
デバッグ実行時のイミディエイトウィンドウ画面
Trace文の出力先にファイルを追加する
Trace文の出力先のリスナーにファイルを追加することで、ログをファイルに出力させることができる。
尚、下記ソースのように1度リスナーの設定をしておけば同一インスタンスで生成されるソース内のTrace文はすべて出力されるようになる。
public Form1() { InitializeComponent(); /// Trace文の出力先にlog.txtを指定する RegistTraceLog("log.txt"); } /// <summary> /// Trace出力ファイルをTraceListenerに登録します /// </summary> /// <param name="filePath"></param> public static void RegistTraceLog(string filePath) { //DefaultTraceListenerオブジェクトを取得 DefaultTraceListener drl; drl = (DefaultTraceListener)Trace.Listeners["Default"]; //LogFileNameを変更する drl.LogFileName = filePath; } private void button2_Click(object sender, EventArgs e) { Trace.WriteLine("Button2 Click"); /// Form2内のTrace文もファイルに出力される (new Form2()).Show(); }
VisualStudioのバージョンによるDebugViewの動作
DebugViewへのログ出力がVisualStudioのバージョンにより少々異なるようで、VS2008以降であるとVisualStudio上でのデバッグ実行中(VS上でのF5)はDebugViewへ表示されなくなった。VS2008以降は実行バイナリを直接起動(VS上でのCtrl+F5)させることによって表示される。