我编写了一个Singeton
紧凑型记录器,这对于ASP.NET
应用程序来说非常方便。只需将其重新排列,然后再Logger.Log.Info("Hello world!");
。它还会自动记录未处理的异常。
有时我在尝试创建日志文件Stream
时会收到错误。
例外是:
该进程无法访问文件'C:\ inetpub \ wwwroot \ MyApp \ Logs \ 5-22-2011.log',因为它正由另一个进程使用..
我使用Process Explorer进行了检查,只有w3wp.exe处理了日志文件。似乎不同的线程出现了问题。这种情况每24小时发生一次!
答案 0 :(得分:1)
如果它定期发生,您可能需要检查IIS设置,并查看应用程序池是否以24小时间隔进行回收。 (我认为从记忆中默认是29h)
如果是这种情况,您的问题可能是由于IIS'启动'新的应用程序池而旧的应用程序池仍在处理请求(重叠的回收 - 这是默认行为),即新的Logger正在尝试在旧进程调用析构函数之前在新进程中实例化。
编辑:忘记提及(我写答案时已经很晚了),缓解这种情况的一种方法是更改日志文件名以包含完整的日期和时间。