C#でデバッグログをファイル出力する方法
C#でデバッグログをファイル出力する方法をご紹介します。
目次
条件
- Visual Studio 2017
デザイン
コンポーネントの配置
ここでは適当にボタンを2つ配置します。
実装
イベントハンドラの設定
デザイン画面で、配置したそれぞれのボタンをダブルクリックして、クリックイベントの関数を自動生成します。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sample3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { } } }
処理の実装
コンストラクタに、デバッグログ出力の処理を記載します。
- デスクトップに「debug.txt」というログファイルを出力するようにします。
- Debug.WriteLine(“・・・”); で出力するログを記述します。
具体的には以下のように記述します。
DefaultTraceListener dtl = (DefaultTraceListener)Debug.Listeners["Default"]; dtl.LogFileName = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\debug.txt"; // デスクトップのdebug.txtにログを出力する。 Debug.WriteLine("◆デバッグログ出力開始");
また、ボタンクリックイベントの関数にもログ出力を記述します。
以下がソース全体です。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sample3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); DefaultTraceListener dtl = (DefaultTraceListener)Debug.Listeners["Default"]; dtl.LogFileName = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\debug.txt"; // デスクトップのdebug.txtにログを出力する。 Debug.WriteLine("◆デバッグログ出力開始"); } private void button1_Click(object sender, EventArgs e) { Debug.WriteLine("ボタン1が押されました!"); } private void button2_Click(object sender, EventArgs e) { Debug.WriteLine("ボタン2が押されました!"); } } }
実行結果
アプリを起動して、以下の順番でボタンを押します。
- ボタン1
- ボタン2
- ボタン1
デスクトップに出力されるログファイル「debug.txt」を見ると、以下のように出力されています。
◆デバッグログ出力開始 ボタン1が押されました! ボタン2が押されました! ボタン1が押されました!
参考
@IT:デバッグ・メッセージをファイルに出力するには?
https://www.atmarkit.co.jp/fdotnet/dotnettips/146debugonfile/debugonfile.html
dobon.net:特殊ディレクトリのパスを取得する
https://dobon.net/vb/dotnet/file/getfolderpath.html