log4net以日期作為文件夾名生成log


將日志分日期記錄相信是很多系統都這么做的,因為查找起來十分方便。而根據log4net說明文檔,可以這么配置

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logfile" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

這樣就會在運行目錄下的生成“logfile20120906”這樣類似的文件。不過這樣看起來也不是太方便,我們希望將log記錄在專門的一個log文件夾下。其實很簡單,只需要將<file value="logfile" />修改為<file value="logfile/" />

這樣log就會生成在運行目錄下的logfile文件夾下,且log名稱為20120906.可是每天的log都會生成到這個文件夾下,時間久了,依然不好查找。最好是能夠每天生成一個文件夾。

很明顯,修改file這個節點已經不管用了,因為這個節點只能配置固定路徑。根據日期變化的內容可知,datePattern是可變的,但是怎樣讓他變成文件夾呢?同樣加一個分隔符“/”試試?結果果然有效。

於是變成了<datePattern value="yyyyMMdd/'log.log'" /> 這樣就生成的log就會在logfile文件夾下的20120906文件夾下生成log.log文件。就能很方便的查找了。

附上完整配置:

 

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
 
<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log\"/>
    <appendToFile value="true"/>
    <maxSizeRollBackups value="10"/>
    <maximumFileSize value="1MB"/>
    <rollingStyle value="Date"/>
    <datePattern value='yyyy-MM-dd/"yourlogname.log"' />
    <staticLogFileName value="false"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level %logger - %message%newline"/>
    </layout>
  </appender>
  <root>
    <level value="DEBUG"/>
    <appender-ref ref="RollingLogFileAppender"/>
  </root>
</log4net>

 

這個是基於滾動文件的,其他模式請參考http://logging.apache.org/log4net/release/config-examples.html

另外datePattern中的文件分割符號只能是"/",file中的可為"/"或"\"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM