2015-10-22 73 views
0

我在記錄錯誤時無法讓log4net創建日誌文件。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類中,Im測試記錄器是實際的y被正確注入,然後在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,而在記錄正確注入預期。

唯一的問題是沒有生成日誌文件。

+1

試日誌文件的絕對路徑,並確保運行您的Web應用程序的用戶具有權限... –

回答

1

你的問題是,在你的根記錄你引用所謂的「LogFileAppender」,但實際上你的appender被稱爲「RollingFileAppender進行」一個appender - 該附加目的地的名稱必須是相同的兩個地方:

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