2015-04-01 80 views
1

我有以下的配置文件的appender:log4net的滾動不工作

<log4net> 
    <root> 
     <level value="All"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="mylog.log"/> 
     <appendToFile value="true"/> 
     <preserveLogFileNameExtension value="true"/> 
     <rollingStyle value="Composite"/> 
     <datePattern value=".yyyyMMdd"/> 
     <maximumFileSize value="5MB"/> 
     <countDirection value="1"/> 
     <maxSizeRollBackups value="-1"/> 
     <staticLogFileName value="false"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/> 
     </layout> 
    </appender> 
    </log4net> 

而且在Global.asax中下面的代碼:

Sub Application_Start() 
     AreaRegistration.RegisterAllAreas() 

     RegisterGlobalFilters(GlobalFilters.Filters) 
     RegisterRoutes(RouteTable.Routes) 

     BasicConfigurator.Configure(); 

     LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured") 


    End Sub 

對於上述配置的標記文件。我試過C:\我的文件夾\ mylog.log以及上面看到的是mylog.log

但是,我沒有看到此文件在任何地方生成,並且沒有例外。

環境:VS 2013 ASP.Net VB。通過調試菜單運行。當我運行IISExpress時,由VS2013啓動並運行網站。但沒有看到日誌。

我已經嘗試了文件標籤的各種組合,但沒有任何工作。

有人可以幫忙嗎?

回答

2

這用於爲我工作(我已經切換到更輕,更好的可配置的NLog),日誌每日滾動,寫在應用程序路徑下名爲「日誌」的子文件夾中。

<appender name="RollingDebugAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs\" /> 
    <datePattern value="yyyy-MM-dd'-FULL.log'" /> 
    <staticLogFileName value="false" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <maxSizeRollBackups value="100" /> 
    <maximumFileSize value="5MB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 
2

你應該打開log4net的內部調試要弄清楚什麼是失敗?

樣品web.config中的故障排除部分可用here

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 

    <system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add name="textWriterTraceListener" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="C:\log4net_internal.log"/> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

更多信息。

2

這是我落得這樣做,最終版本的工作:

<log4net> 
    <root> 
     <level value="ALL"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="logs\log4net.log"/> 
     <datePattern value="yyyy-MM-dd'-FULL.log'" /> 
     <appendToFile value="true"/> 
     <preserveLogFileNameExtension value="true"/> 
     <rollingStyle value="Size"/>  
     <maximumFileSize value="250KB"/>  
     <maxSizeRollBackups value="-1"/> 
     <staticLogFileName value="false"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/> 
     </layout> 
    </appender> 
    </log4net> 

而且

XmlConfigurator.Configure() 
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured") 

此記錄到日誌\ log4net.log在應用程序目錄(即其中我的代碼是)