Правильно ли будет реализован достаточно простой класс безопасного ведения журнала?
Я знаю, что я никогда явно не закрываю TextWriter
, это будет проблема?
Когда я изначально использовал метод TextWriter.Synchronized
, он, похоже, не работал до тех пор, пока я не инициализировал его в статическом конструкторе и не сделал бы его readonly следующим образом:
public static class Logger
{
static readonly TextWriter tw;
static Logger()
{
tw = TextWriter.Synchronized(File.AppendText(SPath() + "\\Log.txt"));
}
public static string SPath()
{
return ConfigManager.GetAppSetting("logPath");
}
public static void Write(string logMessage)
{
try
{
Log(logMessage, tw);
}
catch (IOException e)
{
tw.Close();
}
}
public static void Log(string logMessage, TextWriter w)
{
w.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),
DateTime.Now.ToLongDateString());
w.WriteLine(" :");
w.WriteLine(" :{0}", logMessage);
w.WriteLine("-------------------------------");
// Update the underlying file.
w.Flush();
}
}