2012-08-23 34 views
5

我想用下面的方式創建日誌文件名:log4net的生成錯誤日誌文件名

SBRF_20120820.log 
SBRF_20120821.log 
SBRF_20120822.log 
SBRF_20120823.log 

換句話說,每一天創建一個新的文件。所以,我創建了以下配置做到這一點:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net"> 
     <file type="log4net.Util.PatternString" value="Logs/SBRF_%date{yyyyMMdd}.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %-5level - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="LogEmArquivo"> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </logger> 
</log4net> 

當我運行該程序,今天例如,文件​​將被創建。但在隨後的日子裏日誌保持在​​文件寫的,所創建的文件是:

SBRF_20120823.log.2012-08-23 
SBRF_20120823.log.2012-08-24 
SBRF_20120823.log.2012-08-25 
SBRF_20120823.log.2012-08-26 

如果我運行該程序,明天將要創建的文件有:

SBRF_20120824.log.2012-08-24 
SBRF_20120824.log.2012-08-25 
SBRF_20120824.log.2012-08-26 
SBRF_20120824.log.2012-08-27 

爲什麼?

回答

7

您不會將日期模式放入<文件> - 這是文件名的靜態部分。你需要把它放入<datePattern>。

此外,如果您使用的是log4net 1.2.11,則可以使用<preserveLogFileNameExtension>,它也將datePattern放在當前文件上。

我覺得這是你希望你的配置是什麼樣子:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net"> 
     <file type="log4net.Util.PatternString" value="Logs/SBRF_.log"/> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd" /> 
     <preserveLogFileNameExtension value="true"/> 
     <staticLogFileName value="false" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %-5level - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="LogEmArquivo"> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </logger> 

+0

+1。我曾經寫過自己的RollingFileAppender,但現在切換到使用這些新設置的最新log4net。 –

0

刪除<rollingStyle value="Date" />

+0

爲什麼?如果我刪除這個標籤,日誌將停止爲每一天創建一個新文件,對吧? –

-1

不要以爲你用RollingFileAppender改變了這個行爲,所以你將不得不創建你自己的appender。