rendered paste bodyusing System;
using System.Globalization;
using System.IO;
namespace Chief
{
public delegate void LogEvent(string message);
public class Log
{
public event LogEvent Written;
public string Directory = System.IO.Directory.GetCurrentDirectory() + "\\Log\\";
public string FileName
{
get
{
if (m_FileName != null)
return m_FileName;
return this.Directory + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
}
set
{
this.m_FileName = value;
}
}
public bool Enabled = true;
private string m_FileName;
public Log(string fileName)
{
this.FileName = fileName;
}
public void Append(string message)
{
lock (this)
{
if (this.Enabled)
{
if (!System.IO.Directory.Exists(this.Directory))
{
DirectoryInfo info = System.IO.Directory.CreateDirectory(this.Directory);
}
if (!File.Exists(this.Directory + this.FileName))
{
FileStream fs = File.Create(this.Directory + this.FileName);
fs.Close();
}
for (; ; )
{
try
{
StreamWriter sw = File.AppendText(this.Directory + this.FileName);
sw.WriteLine(DateTime.Now.ToString("hh:mm:ss") + " | " + message);
sw.Flush();
sw.Close();
// If successful, exit loop
break;
}
catch (Exception)
{
// If unsuccessful, try again and again
System.Threading.Thread.Sleep(10);
}
}
if (Written != null)
Written(DateTime.Now.ToString("hh:mm:ss") + " | " + message);
}
}
}
}
}