• ホーム
  • C#
  • C#でアプリのログを記録してみる

C#でアプリのログを記録してみる

アプリケーションの実行時にログをとっておきたいことありますよね。テキストファイルに実行時の情報を記録するようにしてみたいと思います。

目次

  1. PCの環境情報を取得する
  2. 日時を調べる
  3. テキストファイルに記録する

PCの環境情報を取得する

System名前空間のEnvironmentクラスのプロパティを参照すると、PCの情報が分ります。何が分るかは、MSDSのEnvironmentクラスを参照してください。ここでは試しに、カレントディレクトリ、PCの名前、USERの名前を表示させてみます。フォームにラベルコントロールを3つ配置したアプリを作成します。ラベルコントロールにそれぞれカレントディレクトリ、PCの名前、USERの名前を表示します。 150925-1-00 また、コードは下記のようにします。

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;
        }
    }
}

これを実行すると、下図のように表示されます。カレントディレクトリの表記が入り切りませんでしたね。 150925-1-01

日時を調べる

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");
        }
    }
}

実行結果はこうなります。 150925-1-02

テキストファイルに記録する

テキストファイルに追加する形で、日時と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というファイルが作成され下図のように書き込まれます。 150925-1-03 これでログとれそうですね。

公開日

広告