本文介紹了Logback在每小時回滾期間刪除MaxHistory之前的日志的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我使用下面的附加器,可以看到每小時一次回滾。
但我提到<maxHistory>
是10天。但我可以看到日志會在每天結束時被Logback自動刪除。
但預期日志文件最多保留10天。
<appender name="TIME_BASED_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>c:/logs/timeBasedlogFile.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>c:/logs/timeBasedlogFile.%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
如果我使用每日滾動,則可以看到滾動日志按<maxHistory>
中所述的天數進行維護
最大歷史記錄是否僅適用于每日滾動?
推薦答案
元素maxHistory
指定要記錄到歷史中的已滾動文件的數量。
如果選擇<maxHistory>10</maxHistory>
,則意味著您可能擁有10個文件的歷史記錄。
在您的例子中,您將小時指定為滾動的粒度。這意味著如果您的應用程序每小時記錄一次,則10小時后歷史記錄將滿,較舊的歷史記錄日志將被清除。
使用小時滾動文件配置,正好有10天作為歷史記錄并不是很明顯,因為您的應用程序可能會關閉幾個小時,甚至幾天。
事實上,如果您希望保持小時滾動粒度,我認為您應該以小時而不是天來指定歷史記錄:您必須將兩者都對齊。
例如,如果您認為應用程序在一天中運行12小時,則可以將120
指定為history
值(12小時*10天),以獲得接近10天的時間。
如果您沒有掌握日志的頻率,并且希望確保沒有少于10天的歷史記錄,請使用240
Ashistory
值(24小時*10天)。
唯一的缺點是:如果應用程序不記錄每天的每個小時,您將根據需要獲取更多歷史記錄。
如果我使用每日滾動,則可以看到滾動的日志是
維護<maxHistory>
中提到的天數
是,因為如前所述,maxHistory
值的粒度取決于滾動時間粒度。
這篇關于Logback在每小時回滾期間刪除MaxHistory之前的日志的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,