【发布时间】:2008-11-12 18:32:09
【问题描述】:
我正在使用 File.AppendAllText 方法将事件数据写入 asp.net httphandler 中的日志文件。我担心同时收到多个请求时会发生什么。 AppendAllText 是否锁定它正在写入的文件?
【问题讨论】:
我正在使用 File.AppendAllText 方法将事件数据写入 asp.net httphandler 中的日志文件。我担心同时收到多个请求时会发生什么。 AppendAllText 是否锁定它正在写入的文件?
【问题讨论】:
我建议使用TextWriterTraceListener,而不是尝试自己管理。
设置和使用非常简单:
TextWriterTraceListener logListener = new TextWriterTraceListener("C:\log.txt", "My Log Name");
Trace.Listeners.Add(logListener);
然后记录一些东西:
Trace.WriteLine("Log this text");
它使用起来非常简单,并且有许多不同类型的 SQL、事件日志、文本文件等侦听器。因此,如果您想更改侦听器,则无需调整代码。
【讨论】:
不,你应该有一个静态锁对象来保护日志文件的写入,例如
public static object LockingTarget = new object();
public void LogToFile(string msg)
{
lock(LockingTarget)
{
//append to file here as fast as possible
}
}
【讨论】:
您可以使用 My.Log 写入日志文件。
编辑:如果您使用 FileLogTraceListener,则该侦听器是线程安全的。
这样做还允许您通过 web.config 文件控制和配置日志记录。
【讨论】: