【问题标题】:Log4Net Configuration - No system Log file createdLog4Net 配置 - 未创建系统日志文件
【发布时间】:2015-10-22 23:32:35
【问题描述】:

当记录错误时,我无法让 log4net 创建日志文件。

我正在使用 ninject 为与 log4net 相关的对象注入依赖项,因为我创建了一个包装器:-

public interface ILogManager
{
   ILog GetLog(Type typeAssociatedWithRequestLog);
}

public class LogManagerAdapter : ILogManager
{
   public ILog GetLog(Type typeAssociatedWithRequestLog)
   {
      var log = LogManager.GetLogger(typeAssociatedWithRequestLog);

      return log;
   }
}

在 NinjectConfigurator.cs 中:-

 private void ConfigureLog4net(IKernel container)
 {
     XmlConfigurator.Configure();

     var logManager = new LogManagerAdapter();

     container.Bind<ILogManager>().ToConstant(logManager);
 }

 private void AddBindings(IKernel container)
 {
     ConfigureLog4net(container);
 }

在我的 webconfig 中,我有以下内容:-

<configSections>
    <section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="..\\..\\logs\\WebApi2Book.Api.Log"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="-1"/>
      <countDirection value="1"/>
      <maximumFileSize value="5MB"/>
      <rollingStyle value="Composite"/>
      <preserveLogFileNameExtension value="true"/>
      <staticLogFileName value="false"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception"/>
      </layout>
      <logger name="NHibernate">
        <level value="ERROR"/>
      </logger>
      <logger name="NHibernate.SQL">
        <level value="ERROR"/>
      </logger>
      <root>
        <level value="ALL"/>
        <appender-ref ref="LogFileAppender"/>
      </root>
    </appender>
  </log4net>

在 Global.asax 类中,我测试记录器实际上是正确注入的,然后测试在 Application_Start() 方法中记录错误。

protected void Application_Start()
        {
            var log = WebContainerManager.Get<ILogManager>().GetLog(typeof(WebApiApplication));

            log.Error("Yey!!!!  works!");
            log.Debug("Yey!!!!  works!! Debug");


        }

我在调试程序时找不到任何问题,我检查了 IsDebugEnabled 是否设置为 TRUE,并且记录器按预期正确注入。

唯一的问题是没有生成日志文件。

【问题讨论】:

  • 尝试日志文件的绝对路径并确保运行您的 Web 应用程序的用户具有权限...

标签: asp.net log4net


【解决方案1】:

您的问题是,在您的根记录器中,您引用了一个名为“LogFileAppender”的附加程序,但实际上您的附加程序被称为“RollingFileAppender”——两个地方的附加程序名称必须相同:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  …
<root>
  <level value="ALL"/>
  <appender-ref ref="RollingFileAppender "/>
</root>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多