用于ASP.NET应用程序的Singleton compact Logger

时间:2011-05-23 03:28:11

标签: c# asp.net logging singleton

我编写了一个Singeton紧凑型记录器,这对于ASP.NET应用程序来说非常方便。只需将其重新排列,然后再Logger.Log.Info("Hello world!");。它还会自动记录未处理的异常。

有时我在尝试创建日志文件Stream时会收到错误。

例外是:

  

该进程无法访问文件'C:\ inetpub \ wwwroot \ MyApp \ Logs \ 5-22-2011.log',因为它正由另一个进程使用..

我使用Process Explorer进行了检查,只有w3wp.exe处理了日志文件。似乎不同的线程出现了问题。这种情况每24小时发生一次!

1 个答案:

答案 0 :(得分:1)

如果它定期发生,您可能需要检查IIS设置,并查看应用程序池是否以24小时间隔进行回收。 (我认为从记忆中默认是29h)

如果是这种情况,您的问题可能是由于IIS'启动'新的应用程序池而旧的应用程序池仍在处理请求(重叠的回收 - 这是默认行为),即新的Logger正在尝试在旧进程调用析构函数之前在新进程中实例化。

编辑:忘记提及(我写答案时已经很晚了),缓解这种情况的一种方法是更改​​日志文件名以包含完整的日期和时间。