我试图将日期添加到我的日志文件名中,并且我能够通过遵循我在stackoverflow中找到的一些建议来使其工作.一切正常,但由于某种原因,第一个文件总是有两次附加日期.
例如,而不是log.2009-02-23.log,我得到log.2009-02-23.log.2009-02-23.log.
我发现它很奇怪,而且这是一个非常简单的代码.这不像我在多线程环境中运行它.
我的log4net配置:
有什么想法吗?
编辑:我想添加有关我正在测试的环境的信息.
- asp.net
- .net framework 2.0
- windows server 2003 64位服务包2
- log4net 1.2.10
如果在初始化日志系统时访问日志文件时出现问题,则会发生这种情况.如果您初始化日志系统两次,如果在另一个副本运行并运行日志文件时运行程序,或者您正在文本编辑器中编辑日志文件,则会发生这种情况.基本上是在log4net init运行时导致日志文件写入锁定的任何事情.
检查代码是否有对log4net init的重复调用 - 例如,您可能正在构造函数中初始化,而不是在单例的静态构造函数或全局init中初始化.
如果您在"Web园"配置中运行并且不在文件名中包含PID,也会发生这种情况,因为每个不同的Web服务器进程都会尝试写入同一文件.如果使用Web园并写入文件,请将pid添加到文件名模式,以便每个服务器进程获取自己的文件.
这是一个许可问题.至少那就是发生在我身上的事情.
我是使用Log4Net的新手,所以我不知道它有内部日志,但我找到了,所以我尝试了内部登录.我不太确定它在说什么,但这就是我对它的看法:1.将日期附加到文件名.2.尝试访问要写入的文件(失败).3. 再次将日期附加到文件名.4.成功访问该文件(现在具有奇怪的文件名)
在我知道这一点之前,我正在谷歌搜索这个问题的解决方案,关键字就像我在这个stackoverflow问题上的标题.那里没有太多的信息.我发现也许有一个人说它发生在一些人身上,但从未真正解释过为什么也没有解决方案.有了这个新信息(+来自Log4Net的内部错误消息),我正在查看搜索引擎中的不同线程.有了这个,我发现它可能是一个权限问题.
似乎编写应用程序对logs文件夹没有足够的权限.应用程序的默认标识通常是NETWORK_SERVICE.在我给予该文件夹更多的权限(我给它完全控制但我不知道使其工作的最小值是什么)后,它工作得很好.
如果有人能比我更好地解释这一点,请随时编辑.