public static class LogWriter
{
private static ReaderWriterLockSlim writeLock = new ReaderWriterLockSlim();
public static void WriteExceptionLog(string content)
{
#if DEBUG
MessageBox.Show(content);
#endif
WriteLog(content, Constant.EXCEPTION_LOG_PATH);
}
public static void WriteLog(string content, string path)
{
try
{
writeLock.EnterWriteLock();
string directory = Path.GetDirectoryName(path);
if (!Directory.Exists(Path.GetDirectoryName(directory)))
Directory.CreateDirectory(directory);
using (StreamWriter writeFile = new StreamWriter(path, true))
{
content = DateTime.Now + " : " + content;
writeFile.WriteLine(content);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
writeLock.ExitWriteLock();
}
}
}
ログを書き込むクラスがあります。私はログに非同期で書き込みを行っているため、書き込みが完了したらロックして解放する必要がありますが、これはやや面倒な解決策のようで、パフォーマンスが悪い可能性さえあります。
これを処理するより良い方法は何ですか?