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();
}
}
}
로그를 쓰는 클래스가 있습니다. 비동기 적으로 로그에 쓰고 있기 때문에 쓰기가 끝나면 잠금을 설정하고 해제해야합니다.하지만 이것은 다소 어색한 해결책이며 성능에 좋지 않은 것처럼 보입니다.비동기 로그 쓰기를 처리하는 더 나은 방법
이 문제를 해결하는 더 좋은 방법은 무엇입니까?
'NLog' 또는'log4Net'과 같은 기존 로깅 라이브러리를 사용하지 않을 이유가 있습니까? – RePierre