log4net保留幾天內的日志


想實現保留7天(一周)內的日志,網上一堆下述代碼

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <!--日志路徑-->
    <param name="File" type="log4net.Util.PatternString" value="%Log\%date{yyyMMdd}.log" />
    <!--是否是向文件中追加日志-->
    <param name="AppendToFile" value="true" />
    <!--log保留天數-->!!! 此注釋是錯的
    <param name="MaxSizeRollBackups" value="10" />
    <!--日志文件名是否是固定不變的-->
    <param name="StaticLogFileName" value="false" />
    <!--日志文件名格式為:2019-11-14.log-->
    <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
    <!--日志根據日期滾動-->
    <param name="RollingStyle" value="Date" />
    <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %loggername" />
    </layout>
</appender>

 

上面注釋 <!--log保留天數--> 錯得離譜,非常坑人。我參考這種說法,測試了半天都無效,也修改上面幾個參數的值測試也沒效。MaxSizeRollBackups是和文件大小配合使用的,比如設置2M,超過2M的日志就會切片備份,最多存在10個備份。

 

后來搜索到本文參考1中的問題,才明白在參考3官網說明里,早已經很明確的提示了

Caution note Caution

A maximum number of backup files when rolling on date/time boundaries is not supported.

根本就沒有這種配置!!不支持在日期/時間滾動時設置備份文件的最大數量。

 

參考1中的回答還是有幾個靠譜的方案,比如自己實現,寫一個函數檢查日志超過了10天就刪除。比如設置 datePattern value="_dd'.log'" 這樣每個月都會自動覆蓋。

我目前按照 <param name= "DatePattern" value= "dddd&quot;log.txt&quot;"/> 表示星期幾來配置的,這種方法同一天之內是往文件里追加,不同的天,同一個星期幾會覆蓋再追加

 

 

 

參考

1、相同問題:https://stackoverflow.com/questions/95286/log4net-set-max-backup-files-on-rollingfileappender-with-rolling-date/

2、官網例子:http://logging.apache.org/log4net/release/config-examples.html

3、官網說明:http://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_RollingFileAppender.htm


免責聲明!

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



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