目前,我的应用程序以线程安全的方式将调试消息和异常写入日志文件。它非常简单,我不需要任何框架(即log4net)来执行此操作。
这就是我目前的做法:
private static void Write(string message)
{
Task.Factory.StartNew(() =>
{
try
{
lock (locker)
{
File.AppendAllText(DebugFilePath, message);
InvokeLogWrittenEvent(message);
}
}
catch
{
}
});
}
这样可以,还是你认为我应该有一个专用线程,它有一个BlockingCollection来处理添加到集合中的项目?两者都会给我相同的输出,但我不确定是否有任何性能影响。
答案 0 :(得分:1)
在您的应用程序进程中执行日志记录的问题在于它会影响性能并在崩溃的情况下为您提供duff结果(如果写入文件,它也会阻止应用程序关闭)。 运行一个单独的主线程,您传递日志消息是一种更有效的方式,虽然需要更多编码,因为它对您的应用程序性能的影响要小得多。