C#でアプリのログを記録してみる
アプリケーションの実行時にログをとっておきたいことありますよね。テキストファイルに実行時の情報を記録するようにしてみたいと思います。
目次
PCの環境情報を取得する
System名前空間のEnvironmentクラスのプロパティを参照すると、PCの情報が分ります。何が分るかは、MSDSのEnvironmentクラスを参照してください。ここでは試しに、カレントディレクトリ、PCの名前、USERの名前を表示させてみます。フォームにラベルコントロールを3つ配置したアプリを作成します。ラベルコントロールにそれぞれカレントディレクトリ、PCの名前、USERの名前を表示します。 また、コードは下記のようにします。
namespace logtest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
label1.Text = "CurrentDirectory :" + Environment.CurrentDirectory;
label2.Text = "MachineName :" + Environment.MachineName;
label3.Text = "UserName :"+ Environment.UserName;
}
}
}
日時を調べる
System名前空間のDateTime構造体を参照して、現在の日時を調べます。詳しくは、MSDSのDateTime構造体を参照してください。ここでは、現在の日時を一般的な日付と時刻のパターンで取得してみます。流れとしては、DateTime.NowプロパティでDateTimeオブジェクトを取得して、そのオブジェクトをDateTime.ToStringメソッドで「一般的な日付と時刻」のフォーマットの文字列に変換します。ToStringメソッドの引数が、文字列に変換するときのフォーマットを表します。
namespace logtest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DateTime dt = DateTime.Now;
label1.Text = dt.ToString("G");
}
}
}
テキストファイルに記録する
テキストファイルに追加する形で、日時とPC名とUSER名を記録してみます。 ファイルに書き込むために、System.IO名前空間のStreamWriterクラスを使用します。詳細はMSDNのStreamWriterクラスを参照してください。作ってみたコードは下記のようになりました。
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;
using System.IO;
namespace logtest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DateTime dt = DateTime.Now;
using (StreamWriter writer = new StreamWriter("logtest.txt", true, Encoding.GetEncoding("Shift_JIS")))
{
writer.WriteLine(dt.ToString("G") + ", " + Environment.MachineName + ", " + Environment.UserName);
}
}
}
}
まず、using System.IO;
を追記してSystem.IO名前空間を使用することを宣言します。
StreamWriter("logtest.txt", true, Encoding.GetEncoding("Shift_JIS"))
ですが、1番目の引数にファイル名を指定します。2番目の引数には、ファイルに追記するかファイルを書き換えるかを指定します。Trueであればファイルの最後に追記、Falseであればファイルを書き換えるモードでファイルを開きます。3番目の引数には、文字コードを指定します。そして、WriteLineメソッドでファイルに書き込みします。こうして作成したアプリを3回実行すると、アプリのカレントフォルダにlogtest.txtというファイルが作成され下図のように書き込まれます。 これでログとれそうですね。
公開日
広告
C#カテゴリの投稿
- C#でMVVMって何でしょう
- C#でPDFを表示する(WPF)
- C#でアプリのログを記録してみる
- C#でアプリの設定を保存する
- C#でインスタンスをプログラムで作ってみた(Activator.CreateInstance編)
- C#でインスタンスをプログラムで作ってみた(Type.InvokeMember編)
- C#でインスタンス間のデータの受け渡しをしてみた
- C#でウェブサイトのソースを取得してみた
- C#でエラーの処理をする
- C#でクラスのフィールド宣言とコンストラクターでの初期化はどっちが優先する?
- C#でスタックを使って逆ポーランド記法の計算をしてみた
- C#で数式を中置記法から後置記法(逆ポーランド記法)に変換してみた(三角関数編)
- C#で選択(switch-case編)
- C#のWPFでデータバインディング
- C#のXAMLでメニューとステータスバーのレイアウトをしてみた
- C#のアプリの情報を表示してみた
- C#のクラスとインスタンスとオブジェクト
- C#の反復処理(foreach編)
- C#の命名規則
- C#へのMicrosoft.TeamFoundation.Controlsの参照の追加について