Я действительно рекомендую не изобретать велосипед на этом :)
ли следующее правильным способом реализовать довольно простой потокобезопасный класс журналирования?
Я знаю, что никогда не закрываюTextWriter
это будет проблемой?
Когда я изначально использовалTextWriter.Synchronized
Этот метод, похоже, не работал, пока я не инициализировал его в статическом конструкторе и не сделал его доступным только для чтения:
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();
}
}