Log4net没有记录任何错误

时间:2016-04-08 07:01:41

标签: log4net

我已经为我的项目添加了一个log4net实现,但它根本没有记录任何内容

在我的web.config

<log4net>

    <appender name="FileAppender" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging">
      <file value="C:\\inetpub\\wwwroot\\Onboarding\\data\\logs\\log.{date}.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
      </layout>
      <encoding value="utf-8" />
       <filter type="log4net.Filter.LevelRangeFilter">
       <param name="LevelMin" value="DEBUG" />
       <param name="LevelMax" value="FATAL" />
   </filter>
    </appender>

  </log4net>

在我的global.asax中:

void Application_Start(object sender, EventArgs e)
{
    log4net.Config.XmlConfigurator.Configure();
}

在我记录错误的类(在类级别)

ILog log = LogManager.GetLogger(System.Reflection.MethodBase
                                                 .GetCurrentMethod().DeclaringType);

然后在方法本身:

_logger.Log(AusSuperOnboarding.Business.Logging.Enum.Level.Fatal,
            GetType().Name, "Exception thrown in SendMessage()", null);

2 个答案:

答案 0 :(得分:1)

确保运行网站代码的服务帐户用户具有对路径的写访问权限:C:\ inetpub \ wwwroot \ Onboarding \ data \ logs

如果您使用的是IIS网站,则可以检查与该网站关联的应用程序池,然后右键单击应用程序池并选择高级设置,您可以在“身份”字段中查看应用程序池标识。

查看日志文件夹的属性,选择“安全”选项卡,单击“编辑”并添加应用程序池标识用户,并确保&#34;修改&#34;勾选复选框

答案 1 :(得分:1)

您的配置不完整。

您已定义了appender,但没有使用它们的记录器。这意味着当您创建一个记录器时,它没有与之关联的appender,因此没有记录。

在你的配置中添加一个root元素:由于log4net记录器是分层的,你创建的任何记录器都将从它继承appender:

<root>
    <level value="ALL" />
    <appender-ref ref="FileAppender" />
<root>