Log4J 2 日志配置文件詳解

Log4J 2 日志配置

分享是最好的記憶--
如需轉(zhuǎn)發(fā)請(qǐng)注明出處 **
[
強(qiáng)調(diào)]:共同學(xué)習(xí)** 共同進(jìn)步 不喜勿噴


所需jar包

  1. log4j-core-2.10.0.jar
  2. log4j-api-2.10.0.jar
  3. log4j-web-2.10.0.jar
 <!--配置log4J-->
        <context-param>
            <param-name>log4jConfiguration</param-name>
            <param-value></param-value>
        </context-param>
        <context-param>
            <param-name>log4jContextName</param-name>
            <param-value>loggerName</param-value>
        </context-param>
        <listener>
            <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
        </listener> 
此處配置文件內(nèi)容取自官方
<?xml version="1.0" encoding="UTF-8"?>

<!--
    status : 這個(gè)用于設(shè)置log4j2自身內(nèi)部的信息輸出,可以不設(shè)置,當(dāng)設(shè)置成trace時(shí),會(huì)看到log4j2內(nèi)部各種詳細(xì)輸出
    monitorInterval : Log4j能夠自動(dòng)檢測(cè)修改配置文件和重新配置本身, 設(shè)置間隔秒數(shù)境蔼。此處表示每隔600秒重讀一次配置文件
-->
<Configuration status="OFF" monitorInterval="600">

    <!--日志級(jí)別:TRACE < DEBUG < INFO < WARN < ERROR < FATAL-->
    <!--如果設(shè)置為WARN奶甘,則低于WARN的信息都不會(huì)輸出-->
    <Properties>
        <!-- 配置日志文件輸出目錄,此處為項(xiàng)目根目錄下的logs文件夾 -->
        <Property name="LOG_HOME">logs</Property>
        <property name="FILE_NAME">cnblogs</property>
    </Properties>

    <Appenders>
        <!--這個(gè)輸出控制臺(tái)的配置-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制臺(tái)只輸出level及其以上級(jí)別的信息(onMatch)匠楚,其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--日志輸出的格式-->
            <!--
                %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生產(chǎn)時(shí)間,輸出到毫秒的時(shí)間
                %-5level : 輸出日志級(jí)別,-5表示左對(duì)齊并且固定輸出5個(gè)字符哲虾,如果不足在右邊補(bǔ)0
                %c : logger的名稱(%logger)
                %t : 輸出當(dāng)前線程名稱
                %p : 日志輸出格式
                %m : 日志內(nèi)容锦亦,即 logger.info("message")
                %n : 換行符
                %C : Java類(lèi)名(%F)
                %L : 行號(hào)
                %M : 方法名
                %l : 輸出語(yǔ)句所在的行數(shù), 包括類(lèi)名、方法名嫂拴、文件名高氮、行數(shù)
                hostName : 本地機(jī)器名
                hostAddress : 本地ip地址
             -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <!--
            循環(huán)日志文件:日志文件大于閥值的時(shí)候,就開(kāi)始寫(xiě)一個(gè)新的日志文件
            這個(gè)會(huì)打印出所有的信息顷牌,每次大小超過(guò)size剪芍,則這size大小的日志會(huì)自動(dòng)存入按年份-月份建立的文件夾下面并進(jìn)行壓縮,作為存檔

            fileName    : 指定當(dāng)前日志文件的位置和文件名稱
            filePattern : 指定當(dāng)發(fā)生Rolling時(shí)窟蓝,文件的轉(zhuǎn)移和重命名規(guī)則
            SizeBasedTriggeringPolicy : 指定當(dāng)文件體積大于size指定的值時(shí)罪裹,觸發(fā)Rolling
            DefaultRolloverStrategy : 指定最多保存的文件個(gè)數(shù)
            TimeBasedTriggeringPolicy : 這個(gè)配置需要和filePattern結(jié)合使用
                注意filePattern中配置的文件重命名規(guī)則是${FILE_NAME}_%d{yyyy-MM-dd}_%i,最小的時(shí)間粒度是dd运挫,即天状共,
                TimeBasedTriggeringPolicy指定的size是1,結(jié)合起來(lái)就是每1天生成一個(gè)新文件
        -->

        <RollingRandomAccessFile name="INFO" fileName="logs/${FILE_NAME}.log"
                                 filePattern="log/${FILE_NAME}_%d{yyyy-MM-dd}_%i.log.gz">
            <Filters>
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="1MB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>

        <!--錯(cuò)誤信息記錄-->
        <RollingRandomAccessFile name="ERROR" fileName="logs/${FILE_NAME}-ERROR.log"
                                 filePattern="log/${FILE_NAME}-ERROR_%d{yyyy-MM-dd}_%i.log.gz">
            <Filters>
                <ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="1MB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>

        <!--系統(tǒng)級(jí)別的錯(cuò)誤信息-->
        <RollingRandomAccessFile name="FATAL" fileName="logs/${FILE_NAME}-FATAL.log"
                                 filePattern="log/${FILE_NAME}-FATAL%d{yyyy-MM-dd}_%i.log.gz">
            <Filters>
                <ThresholdFilter level="FATAL" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="1MB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>

        <!--全部日志信息:DEBUG及以上級(jí)別-->
        <RollingRandomAccessFile name="ALL" fileName="logs/${FILE_NAME}-ALL.log"
                                 filePattern="log/${FILE_NAME}-ALL%d{yyyy-MM-dd}_%i.log.gz">
            <Filters>
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>

        <!--配置異步寫(xiě)日志-->
        <Async name="Async">
            <AppenderRef ref="ALL"/>
        </Async>

        <!--輸出到MongoDB中-->
        <NoSql name="databaseAppender">
            <MongoDb databaseName="test" collectionName="errorlog" server="localhost" port="27017"/>
        </NoSql>
    </Appenders>

    <!--然后定義logger谁帕,只有定義了logger并引入的appender峡继,appender才會(huì)生效-->
    <Loggers>
        <!--監(jiān)控系統(tǒng)信息-->
        <Logger name="org.springframework" level="info" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>

        <!--輸出到NoSQL中-->
        <Logger name="mongoLog" level="trace" additivity="false">
            <AppenderRef ref="databaseAppender"/>
        </Logger>

        <Root level="debug">
            <!-- 這兒為trace表示什么都可以打印出來(lái)了,其他幾個(gè)級(jí)別分別為:TRACE、DEBUG匈挖、INFO碾牌、WARN、ERROR和FATAL -->
            <Appender-Ref ref="Console"/>
            <Appender-Ref ref="INFO"/>
            <Appender-Ref ref="ERROR"/>
            <Appender-Ref ref="FATAL"/>
        </Root>
    </Loggers>

</Configuration>

我是ElyarAnwar儡循,在技術(shù)的道路上摸爬滾打舶吗;
熱愛(ài)生活,熱愛(ài)技術(shù)择膝;如果喜歡記得點(diǎn)贊誓琼;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肴捉,隨后出現(xiàn)的幾起案子腹侣,更是在濱河造成了極大的恐慌,老刑警劉巖齿穗,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傲隶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缤灵,警方通過(guò)查閱死者的電腦和手機(jī)伦籍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)蓝晒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人帖鸦,你說(shuō)我怎么就攤上這事芝薇。” “怎么了作儿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵洛二,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我攻锰,道長(zhǎng)晾嘶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任娶吞,我火速辦了婚禮垒迂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘妒蛇。我一直安慰自己机断,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布绣夺。 她就那樣靜靜地躺著吏奸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陶耍。 梳的紋絲不亂的頭發(fā)上奋蔚,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音烈钞,去河邊找鬼泊碑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棵磷,可吹牛的內(nèi)容都是我干的蛾狗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼仪媒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谢鹊?” 一聲冷哼從身側(cè)響起算吩,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佃扼,沒(méi)想到半個(gè)月后偎巢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兼耀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年压昼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了求冷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窍霞,死狀恐怖匠题,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情但金,我是刑警寧澤韭山,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站冷溃,受9級(jí)特大地震影響钱磅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜似枕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(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,324評(píng)論 2 360
  • 正文 我出身青樓吠谢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诗茎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子工坊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

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