我使用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 } }