我在多个应用程序中使用 Log4Net 有一段时间了。它一直运行良好,但最近我注意到应用程序突然不再记录。原来这个问题对于我所有的应用程序都是一样的,几个月前它们都突然停止了记录。奇怪的是,当我直接在服务器 (http://localhost/myApp) 上访问应用程序时,日志记录工作,而当我从另一台 PC 访问应用程序时,没有任何记录。我的第一个想法是它必须与文件/文件夹权限有关,但允许“每个人”(Windows 用户组)完全访问日志文件夹并没有帮助。
它们都是在 IIS7(Windows 2008 R2 Enterprise OS)上运行的 ASP.Net MVC 4 应用程序,应用程序池使用“ApplicationPoolIdentity”。Log4Net 版本是 1.2.10.0,我使用的是自定义 CompositeRollingFileAppender。我认为自定义 appender 可能有问题,但是当我尝试切换到标准 RollingFileAppender 时问题仍然存在。我已经在多台服务器上看到了这个问题。
有没有人见过类似的东西?请分享您的想法,因为我不明白为什么在本地或远程访问应用程序应该有任何区别。
这是我的一个应用程序的 web.config 中的 log4net 部分:
<log4net>
<appender name="RollingFileAppender" type="[mynamespace].CompositeRollingFileAppender">
<file value="Logs/ApplicationLog.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="20" />
<maximumFileSize value="10MB" />
<datePattern value="_yyyy-MM-dd" />
<staticLogFileName value="true" />
<preserveLogFileNameExtension value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%utcdate;%property{ErrorCode};%property{Severity};%property{ErrorName};%property{Module};%m%n" />
</layout>
</appender>
<root>
<priority value="ALL" />
<appender-ref ref="RollingFileAppender" />
<level value="Warn" />
</root>
<logger name="NHibernate">
<level value="OFF" />
</logger>
<logger name="NHibernate.SQL">
<level value="OFF" />
</logger>
</log4net>