本文介紹了Logback在每小時(shí)回滾期間刪除MaxHistory之前的日志的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我使用下面的附加器,可以看到每小時(shí)一次回滾。
但我提到<maxHistory>是10天。但我可以看到日志會(huì)在每天結(jié)束時(shí)被Logback自動(dòng)刪除。
但預(yù)期日志文件最多保留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>
如果我使用每日滾動(dòng),則可以看到滾動(dòng)日志按<maxHistory>
中所述的天數(shù)進(jìn)行維護(hù)
最大歷史記錄是否僅適用于每日滾動(dòng)?
推薦答案
元素maxHistory指定要記錄到歷史中的已滾動(dòng)文件的數(shù)量。
如果選擇<maxHistory>10</maxHistory>,則意味著您可能擁有10個(gè)文件的歷史記錄。
在您的例子中,您將小時(shí)指定為滾動(dòng)的粒度。這意味著如果您的應(yīng)用程序每小時(shí)記錄一次,則10小時(shí)后歷史記錄將滿,較舊的歷史記錄日志將被清除。
使用小時(shí)滾動(dòng)文件配置,正好有10天作為歷史記錄并不是很明顯,因?yàn)槟膽?yīng)用程序可能會(huì)關(guān)閉幾個(gè)小時(shí),甚至幾天。
事實(shí)上,如果您希望保持小時(shí)滾動(dòng)粒度,我認(rèn)為您應(yīng)該以小時(shí)而不是天來指定歷史記錄:您必須將兩者都對(duì)齊。
例如,如果您認(rèn)為應(yīng)用程序在一天中運(yùn)行12小時(shí),則可以將120指定為history值(12小時(shí)*10天),以獲得接近10天的時(shí)間。
如果您沒有掌握日志的頻率,并且希望確保沒有少于10天的歷史記錄,請(qǐng)使用240Ashistory值(24小時(shí)*10天)。
唯一的缺點(diǎn)是:如果應(yīng)用程序不記錄每天的每個(gè)小時(shí),您將根據(jù)需要獲取更多歷史記錄。
如果我使用每日滾動(dòng),則可以看到滾動(dòng)的日志是
維護(hù)<maxHistory>中提到的天數(shù)
是,因?yàn)槿缜八觯?code>maxHistory值的粒度取決于滾動(dòng)時(shí)間粒度。
這篇關(guān)于Logback在每小時(shí)回滾期間刪除MaxHistory之前的日志的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,






