using System;
using System.IO;
using System.Text;
using System.Diagnostics;
namespace Test
{
public class LogWrite
{
/// <summary>
/// コンストラクタ定義[ファイルパス]
/// </summary>
private string appLogPath = string.Empty;
public LogWrite(string appLogPath)
{
this.appLogPath = appLogPath;
}
/// <summary>
/// エラー発生する場合のログ記録
/// </summary>
/// <param name="msg"></param>
public void error(string msg)
{
try
{
WriteInfoIntoLogFile("ERROR", msg);
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// 正常実行履歴のログ記録
/// </summary>
/// <param name="msg"></param>
public void info(string msg)
{
try
{
WriteInfoIntoLogFile("INFO", msg);
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// ログタイプよりそれぞれの情報をログファイルに埋め込む
/// </summary>
/// <param name="type"></param>
/// <param name="msg"></param>
private void WriteInfoIntoLogFile(string type, string msg)
{
try
{
DateTime dateTimeNow = DateTime.Now;
string dateNow = dateTimeNow.ToString("yyyy/MM/dd HH:mm:ss");
string fileDate = dateTimeNow.ToString("yyyyMMdd");
StackFrame stackFrame = new StackFrame(2, true);
string clsName = stackFrame.GetMethod().ReflectedType.FullName;
string methodName = stackFrame.GetMethod().ToString();
string rowNo = stackFrame.GetFileLineNumber().ToString();
string wMsg = dateTimeNow + " " + type + " " + clsName + " : " + methodName + "[" + rowNo + "] : " + msg;
FileInfo fileInfo = new FileInfo(appLogPath + fileDate + ".log");
WriteFile(fileInfo, wMsg);
}
catch
{
return;//エラーが発生しても無視
}
}
/// <summary>
/// 機能:書き出し処理
/// 説明:ログファイルが存在しない場合はそのファイルを作成し書き込む
/// 存在する場合は、そのファイルに追加で書き込む
/// </summary>
/// <param name="fileInfo"></param>
/// <param name="msg"></param>
private void WriteFile(FileInfo fileInfo, string msg)
{
try
{
StreamWriter streamWriter;
using (streamWriter = !fileInfo.Exists ? fileInfo.CreateText() : fileInfo.AppendText())
{
streamWriter.WriteLine(msg);
}
streamWriter.Close();
}
catch (Exception e)
{
throw e;
}
}
}
}