logback日志的刪除策略

logback的日志輸出配置如下
<!-- 日志文件輸出 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${log.base}/${log.moduleName}.log
    </File><!-- 設置日志不超過${log.max.size}時的保存路徑,注意如果 是web項目會保存到Tomcat的bin目錄 下 -->
    <!-- 滾動記錄文件,先將日志記錄到指定文件,當符合某個條件時,將日志記錄到其他文件。-->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip
        </FileNamePattern>
        <!-- 當天的日志大小 超過${log.max.size}時,壓縮日志并保存 -->
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>${log.max.size}</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>${log.max.history}</maxHistory>
    </rollingPolicy>
    <!-- 日志輸出的文件的格式  -->
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</pattern>
    </layout>
</appender>
其中如下定義了壓縮和歷史日志的保存策略,有兩個比較重要的參數(shù):maxFileSize硅确,maxHistory
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>${log.max.size}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${log.max.history}</maxHistory>
先看一下繼承關系圖
繼承關系
maxHistory默認為0循未,由源碼可以看出(TimeBasedRollingPolicy-start())嫂粟,只有不為0并且清理任務開啟標志位true時會觸發(fā)清理操作
if (maxHistory != INFINITE_HISTORY) {
  archiveRemover = timeBasedFileNamingAndTriggeringPolicy.getArchiveRemover();
  archiveRemover.setMaxHistory(maxHistory);
  if(cleanHistoryOnStart) {
    addInfo("Cleaning on start up");
    archiveRemover.clean(new Date(timeBasedFileNamingAndTriggeringPolicy.getCurrentTime()));
  }
}
清理過程會先計算需要清理的時間范圍
int computeElapsedPeriodsSinceLastClean(long nowInMillis) {
    long periodsElapsed = 0;
    //如果尚未執(zhí)行過清理操作,則默認清理除保留天數(shù)外64天以內的日志(由INACTIVITY_TOLERANCE_IN_MILLIS決定)
    if (lastHeartBeat == UNINITIALIZED) {
      addInfo("first clean up after appender initialization");
      periodsElapsed = rc.periodsElapsed(nowInMillis, nowInMillis + INACTIVITY_TOLERANCE_IN_MILLIS);
      if (periodsElapsed > MAX_VALUE_FOR_INACTIVITY_PERIODS)
        periodsElapsed = MAX_VALUE_FOR_INACTIVITY_PERIODS;
    } else {
      //如果已經(jīng)執(zhí)行過清理操作嫡良,則清理從上次到當前時間的需要清理的時間周期。
      periodsElapsed = rc.periodsElapsed(lastHeartBeat, nowInMillis);
      if (periodsElapsed < 1) {
        addWarn("Unexpected periodsElapsed value " + periodsElapsed);
        periodsElapsed = 1;
      }
    }
    return (int) periodsElapsed;
}
接著就會按天來清理
public void clean(Date now) {
    long nowInMillis = now.getTime();
    int periodsElapsed = computeElapsedPeriodsSinceLastClean(nowInMillis);
    lastHeartBeat = nowInMillis;
    if (periodsElapsed > 1) {
      addInfo("periodsElapsed = " + periodsElapsed);
    }
    //按天清理
    for (int i = 0; i < periodsElapsed; i++) {
      //periodOffsetForDeletionTarget=-maxHistory-1蹂楣,如maxHistory為2犯祠,則該值為-3
      cleanByPeriodOffset(now, periodOffsetForDeletionTarget - i);
    }
}
刪除時會根據(jù)當天時間月劈,生成一個正則表達式:/*****/rsms_all_2018-04-09.(\d{1,3}).log.zip而姐,滿足條件的文件就會被清理掉政鼠。
由以上可以得出兩個結論
  1. 如果首次項目啟動時胡桨,超出maxHistory定義的時間的64天之前的日志是不會被清理的
  2. 如果當天日志的編號超出3位數(shù)后綴,也將不會被清理


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市敞曹,隨后出現(xiàn)的幾起案子抓歼,更是在濱河造成了極大的恐慌蹋半,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榕莺,死亡現(xiàn)場離奇詭異贸营,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來福稳,“玉大人毁枯,你說我怎么就攤上這事赂韵〕砬福” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵因妇,是天一觀的道長。 經(jīng)常有香客問我,道長语婴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任捣辆,我火速辦了婚禮坎怪,結果婚禮上闹司,老公的妹妹穿的比我還像新娘。我一直安慰自己借卧,他們只是感情好滨达,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布竹握。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盆佣,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天熟尉,我揣著相機與錄音归露,去河邊找鬼。 笑死斤儿,一個胖子當著我的面吹牛剧包,可吹牛的內容都是我干的。 我是一名探鬼主播往果,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼疆液,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陕贮?” 一聲冷哼從身側響起堕油,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掉缺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卜录,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年眶明,在試婚紗的時候發(fā)現(xiàn)自己被綠了艰毒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡赘来,死狀恐怖现喳,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情犬辰,我是刑警寧澤嗦篱,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站幌缝,受9級特大地震影響灸促,放射性物質發(fā)生泄漏。R本人自食惡果不足惜涵卵,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一浴栽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轿偎,春花似錦典鸡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至昆婿,卻和暖如春球碉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仓蛆。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工睁冬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人看疙。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓豆拨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親能庆。 傳聞我的和親對象是個殘疾皇子辽装,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容