Log4Net仅在从localhost浏览时进行日志记录

时间:2012-11-19 10:19:09

标签: asp.net-mvc iis asp.net-mvc-4 log4net

我已经在多个应用程序中使用了Log4Net一段时间了。它一直工作正常,但最近我注意到应用程序突然不再记录了。原来这个问题对我的所有应用程序来说都是一样的,几个月前它们都突然停止了。奇怪的是,当我直接在服务器上访问应用程序(http:// localhost / myApp)时,日志记录工作,而当我从另一台PC访问应用程序时没有记录任何内容。我的第一个想法是它必须与文件/文件夹权限相关,但允许“Everyone”(Windows用户组)完全访问日志文件夹没有帮助。

它们都是在IIS7(Windows 2008 R2企业操作系统)上运行的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>

1 个答案:

答案 0 :(得分:2)

事实证明这个问题与log4net并没有直接关系,而是ASP.Net MVC3和更新版本默认处理异常的方式。几个月前,我们将应用程序从MVC2更新为MVC4,并且由于默认情况下从global.asax.cs.Application_Start()执行此代码,当CustomErrors设置为RemoteOnly或On时,它“绕过”我们的异常处理模块:

public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }
    }

This thread让我走上正轨。我最终删除了filters.Add(..)行,现在它似乎工作正常!