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