【C#】ログファイルを作成し書き込む

前提

ログ書き込みメソッドはstaticクラスのstaticメソッドとする

サンプルプログラム概要

1.ログファイルを読み取り専用にする。読み取り専用にすることにより、
┗ログファイルがテキストエディタで開かれていても、プログラムから書き込み可能
┗プログラムが書き込み中でも、テキストエディタで開くことが可能

サンプルプログラム

● ログ書き込みメソッド

public static class Utility
{
    private const string LOG_FILE_NAME = "C:\\Users\\user\\Desktop\\temp\\log.log";
    private static FileInfo fileInfo;

    /// ログファイルが存在しない場合、作成/書き込み/閉じる
    /// 存在する場合、開いて/末尾に書き込み/閉じる
    public static void WriteLog(string msg)
    {
        setReadOnry(LOG_FILE_NAME, false);

        using (StreamWriter writer = new StreamWriter(File.Open(LOG_FILE_NAME, FileMode.Append, FileAccess.Write, FileShare.Read), Encoding.GetEncoding(932)))
        {
            writer.WriteLine("[" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "]"+ "\t" + msg);
        }

        setReadOnry(LOG_FILE_NAME, true);
    }

    /// ファイルが存在する場合のみ、読み取り専用属性を変更
    private static void setReadOnry(string FileName, bool status)
    {
        fileInfo = new FileInfo(FileName);

        if (fileInfo.Exists)
        {
            fileInfo.IsReadOnly = status;
        }
    }
}

●ログ書き込みメソッドを利用するプログラム

private void Button1_Click(object sender, RoutedEventArgs e)
{
    //1秒毎に10回ログファイルへ書き込み
    for (int i = 1; i <= 10; i++)
    {
        Utility.WriteLog("Test Message" + "\t" + i +"回目");
        System.Threading.Thread.Sleep(1000);
    }
}

実行結果

タイトルとURLをコピーしました