log4j2定期生成和刪除過(guò)期日志文件的配置

如果你做過(guò)類(lèi)似的資料搜索工作, 你會(huì)容易找到相關(guān)的配置方法. 然而, 但是, 大部分都是你抄我, 我抄你的, 并沒(méi)有仔細(xì)檢測(cè), 就寫(xiě)的教程.
其中重要的就是刪除過(guò)期日志文件的配置. 很多都說(shuō)通過(guò)max=數(shù)字控制.
這是扯淡, 這個(gè)只是控制某時(shí)間段內(nèi)(根據(jù)配置不同)文件的數(shù)目.
它并不會(huì)關(guān)心你的目錄下一共有多少個(gè)日志文件了. 可想而知, 這樣隨著時(shí)間的推移, 雖然每個(gè)時(shí)間區(qū)間內(nèi)日志數(shù)目控制在范圍內(nèi), 但是, 總?cè)罩疚募€(gè)數(shù), 依然日益膨脹.

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN" monitorInterval="300">   <!-- debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/"-->
    <properties>
        <property name="LOG_HOME">logs/kg</property>
        <property name="FILE_NAME">kg</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}:%M(%L)] - %msg%xEx%n"/>
        </Console>
        <RollingRandomAccessFile name="MyFile"
                                 fileName="${LOG_HOME}/${FILE_NAME}.log"
                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd-HH}-%i.log">
            <PatternLayout
                    pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}:%M(%L)] - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>      <!--每1小時(shí)/分/... 生成一個(gè)文件, 時(shí)間依據(jù)filePattern的配置-->
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30">
                <Delete basePath="${LOG_HOME}/$${date:yyyy-MM}/" maxDepth="2">
                    <IfFileName glob="*.log" />
                    <!--!Note: 這里的age必須和filePattern協(xié)調(diào), 后者是精確到HH, 這里就要寫(xiě)成xH, xd就不起作用
                    另外, 數(shù)字最好>2, 否則可能造成刪除的時(shí)候, 最近的文件還處于被占用狀態(tài),導(dǎo)致刪除不成功!-->
                    <!--7天-->
                    <IfLastModified age="168H" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>
    </Appenders>

    <Loggers>
        <!--過(guò)濾掉spring和mybatis的一些無(wú)用的DEBUG信息-->
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.mybatis" level="INFO"/>
        <Logger name="mylog" level="debug" additivity="false">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="debug">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>

</Configuration>

注意:

  • filePattern定義的日志文件后綴精確的時(shí)間決定了定期生成日志文件. 精確到dd, 即%d{yyyy-MM-dd}, 則會(huì)每天生成一個(gè)文件, 精確到HH, 則會(huì)每時(shí)生成一個(gè)文件, ...
  • Delete標(biāo)簽內(nèi)決定了刪除過(guò)期文件的規(guī)則. 需要注意這里的IfLastModified .age要和filePattern精確的時(shí)間一致, 否則貌似無(wú)效.
    我這里日志文件會(huì)按日期放入子文件夾內(nèi), 所以要想統(tǒng)計(jì)總數(shù), 需要遞歸統(tǒng)計(jì), 故設(shè)置maxDepth=2.

依賴(lài)jar包

我這里的依賴(lài)可以實(shí)現(xiàn), 將sfl4j類(lèi)的日志委托給log4j2實(shí)現(xiàn). 所以項(xiàng)目中可以同時(shí)使用sfl4jlog4j類(lèi)的日志系統(tǒng).

   <properties>
        <log4j2.version>2.8</log4j2.version>
  </properties>


  <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </dependency>
        <!--log4j2-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <!--用于與sfl4j保持橋接-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <!--//log4j2-->
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末固蚤,一起剝皮案震驚了整個(gè)濱河市支鸡,隨后出現(xiàn)的幾起案子质帅,更是在濱河造成了極大的恐慌赞厕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件效五,死亡現(xiàn)場(chǎng)離奇詭異微宝,居然都是意外死亡废赞,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)贤旷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)广料,“玉大人,你說(shuō)我怎么就攤上這事幼驶⌒哉眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵县遣,是天一觀的道長(zhǎng)糜颠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)萧求,這世上最難降的妖魔是什么其兴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮夸政,結(jié)果婚禮上元旬,老公的妹妹穿的比我還像新娘。我一直安慰自己守问,他們只是感情好匀归,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著耗帕,像睡著了一般穆端。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仿便,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天体啰,我揣著相機(jī)與錄音,去河邊找鬼嗽仪。 笑死荒勇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闻坚。 我是一名探鬼主播沽翔,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼窿凤!你這毒婦竟也來(lái)了仅偎?” 一聲冷哼從身側(cè)響起西潘,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哨颂,沒(méi)想到半個(gè)月后喷市,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡威恼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年品姓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箫措。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腹备,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斤蔓,到底是詐尸還是另有隱情植酥,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布弦牡,位于F島的核電站友驮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驾锰。R本人自食惡果不足惜卸留,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椭豫。 院中可真熱鬧耻瑟,春花似錦、人聲如沸赏酥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)裸扶。三九已至框都,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姓言,已是汗流浹背瞬项。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留何荚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓猪杭,卻偏偏與公主長(zhǎng)得像餐塘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子皂吮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)戒傻,會(huì)觸發(fā)此異常税手。 O...
    我想起個(gè)好名字閱讀 5,249評(píng)論 0 9
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)需纳,斷路器芦倒,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,827評(píng)論 0 5
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評(píng)論 6 342
  • 原創(chuàng):凡人隨筆 人的內(nèi)心世界可以有山河百川不翩,也必須有螻蟻螢蟲(chóng) 人唯有主動(dòng)感知體會(huì)獨(dú)處兵扬,才是自己與自己能遇見(jiàn)唯一的圣...
    考拉Boy閱讀 889評(píng)論 2 26