Log4Net 配置 - 未创建系统日志文件

Log4Net Configuration - No system Log file created

我无法让 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);
 }

在我的网络配置中,我有以下内容:-

<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 class 中,我正在测试记录器实际上是否被正确注入,然后测试在 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,并且记录器按预期正确注入。

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

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

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