日志02_springboot集成log4j2(持續(xù)更新中......)

Log4j是Apache下的一開(kāi)源項(xiàng)目勺像,通過(guò)使用Log4j可以將日志信息打印到控制臺(tái)、文件等涡贱。我們也可以控制每一條日志的輸出格式咏删,通過(guò)定義每一條日志信息的級(jí)別能夠更加細(xì)致地控制日志的生成過(guò)程。那我們?cè)趕pringboot中應(yīng)該要怎么配置呢问词。
springboot:v2.4.1督函、java8

1、pom文件
<!-- springboot-web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 去掉springboot默認(rèn)日志配置 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- log4J2  -->
<dependency>
    <groupId>org.springframework.boot </groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2激挪、log4j2.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!--  status="OFF"辰狡,可以去掉,它的含義為是否記錄log4j2本身的event信息垄分,默認(rèn)是OFF -->
<configuration status="OFF">
    <!-- 定義下面的引用名 -->
    <!-- 
        自定義格式:
            %t:線程名稱
            %p:日志級(jí)別
            %c:日志消息所在類名
            %m:消息內(nèi)容
            %M:輸出執(zhí)行方法
            %d:發(fā)生時(shí)間宛篇,%d{yyyy-MM-dd HH:mm:ss,SSS},輸出類似:2018-10-18 22:10:28,921
            %x: 輸出和當(dāng)前線程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶多線程的應(yīng)用中薄湿。
            %L:代碼中的行數(shù)
            %n:換行 
        --> 
    <Properties>
        <property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss z} %-5p %c{36} %L %M - %m%x%n</property>
        <property name="file_name">logs/app.log</property>
        <property name="file_info">logs/info.log</property>
        <property name="rolling_file_name">logs/app-%d{yyyy-MM-dd}-%i.log.gz</property>
        <property name="every_file_size">10M</property><!-- 日志切割的最小單位 -->
        <property name="output_log_level">debug</property><!-- 日志輸出級(jí)別 -->
    </Properties>
    <!--先定義所有的appender-->
    <!-- 日志級(jí)別
            trace:追蹤叫倍,就是程序推進(jìn)一下,可以寫(xiě)個(gè)trace輸出
            debug:調(diào)試豺瘤,一般作為最低級(jí)別吆倦,trace基本不用。
            info:輸出重要的信息坐求,使用較多
            warn:警告蚕泽,有些信息不是錯(cuò)誤信息,但也要給一些提示桥嗤。
            error:錯(cuò)誤信息须妻。用的也很多仔蝌。
            fatal:致命錯(cuò)誤。級(jí)別較高.
     -->
    <appenders>
        <!--Appenders節(jié)點(diǎn)荒吏,常見(jiàn)的有三種子節(jié)點(diǎn):Console敛惊、RollingFile、File.-->
        <!-- Console
        name :給loggers調(diào)用
        target:SYSTEM_OUT 或 SYSTEM_ERR,一般只設(shè)置默認(rèn):SYSTEM_OUT.
        -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制臺(tái)只輸出level及以上級(jí)別的信息(onMatch)司倚,其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"></ThresholdFilter>
            <!--輸出日志的格式-->
            <PatternLayout pattern="${log_pattern}"></PatternLayout>
        </Console>
         <!--File
         fileName:指定輸出日志的目的文件帶全路徑的文件名.
         append:決定是否添加還是重新建文件會(huì)打印出所有信息豆混,false這個(gè)log每次運(yùn)行程序會(huì)自動(dòng)清空,
          -->
            <File name="log" fileName="${file_name}" append="false" >
                <PatternLayout pattern="${log_pattern}"></PatternLayout>
                 <!--輸出level及以上級(jí)別的信息(onMatch)动知,其他的直接拒絕(onMismatch)-->
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"></ThresholdFilter>
            </File> 
             <File name="logss" fileName="${file_info}" append="false" >
                <PatternLayout pattern="${log_pattern}"></PatternLayout>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"></ThresholdFilter>
            </File>
        <!--RollingFile
                       fileName:指定輸出日志的目的文件帶全路徑的文件名.
        PatternLayout:輸出格式皿伺,不設(shè)置默認(rèn)為:%m%n.
        filePattern:指定新建日志文件的名稱格式.
        Policies:指定滾動(dòng)日志的策略,就是什么時(shí)候進(jìn)行新建日志文件輸出日志.
          TimeBasedTriggeringPolicy:Policies子節(jié)點(diǎn)盒粮,基于時(shí)間的滾動(dòng)策略鸵鸥,interval屬性用來(lái)指定多久滾動(dòng)一次,默認(rèn)是1 hour丹皱。modulate=true用來(lái)調(diào)整時(shí)間:比如現(xiàn)在是早上3am妒穴,interval是4,那么第一次滾動(dòng)是在4am摊崭,接著是8am讼油,12am...而不是7am.
        SizeBasedTriggeringPolicy:Policies子節(jié)點(diǎn),基于指定文件大小的滾動(dòng)策略呢簸,size屬性用來(lái)定義每個(gè)日志文件的大小.
        DefaultRolloverStrategy:用來(lái)指定同一個(gè)文件夾下最多有幾個(gè)日志文件時(shí)開(kāi)始刪除最舊的矮台,創(chuàng)建新的(通過(guò)max屬性),默認(rèn)
              這個(gè)會(huì)打印出所有的信息,每次大小超過(guò)size根时,則這size大小的日志會(huì)自動(dòng)存入按年份-月份建立的文件夾下面并進(jìn)行壓縮瘦赫,作為存檔
           -->
       <!-- 按月生成歸檔日志,可以使用 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz" 
        <RollingFile name="RollingFile" fileName="${file_name}"
                     filePattern="${rolling_file_name}">
            <PatternLayout pattern="${log_pattern}"></PatternLayout>
            <SizeBasedTriggeringPolicy size="${every_file_size}"></SizeBasedTriggeringPolicy>
        </RollingFile>
        -->
        <!--如果需要配置多個(gè)Rollingfile地址蛤迎,還需要在root下添加appender-ref ref="RollingFile1"/>  
         <RollingFile name="RollingFile1" fileName="logs/app1.log"
                     filePattern="logs/app1-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"></PatternLayout>
            <SizeBasedTriggeringPolicy size="10MB"></SizeBasedTriggeringPolicy>
        </RollingFile>
         -->
  </appenders>
   <!--定義logger
        只有定義了logger并引入的appender确虱,appender才會(huì)生效
             常見(jiàn)的有兩種:Root和Logger.
       Root節(jié)點(diǎn)用來(lái)指定項(xiàng)目的根日志,如果沒(méi)有單獨(dú)指定Logger替裆,那么就會(huì)默認(rèn)使用該Root日志輸出
         level:日志輸出級(jí)別校辩,共有8個(gè)級(jí)別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
         AppenderRef:Root的子節(jié)點(diǎn)辆童,用來(lái)指定該日志輸出到哪個(gè)Appender.
       Logger節(jié)點(diǎn)用來(lái)單獨(dú)指定日志的形式召川,比如要為指定包下的class指定不同的日志級(jí)別等。
         level:日志輸出級(jí)別胸遇,共有8個(gè)級(jí)別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
         name:用來(lái)指定該Logger所適用的類或者類所在的包全路徑,繼承自Root節(jié)點(diǎn).
         AppenderRef:Logger的子節(jié)點(diǎn)汉形,用來(lái)指定該日志輸出到哪個(gè)Appender,
                                如果沒(méi)有指定纸镊,就會(huì)默認(rèn)繼承自Root.如果指定了倍阐,
                                那么會(huì)在指定的這個(gè)Appender和Root的Appender中都會(huì)輸出,
                                此時(shí)我們可以設(shè)置Logger的additivity="false"只在自定義的Appender中進(jìn)行輸出逗威。
    -->
    <loggers>
        <!--建立一個(gè)默認(rèn)的root的logger峰搪,需要在root的level中指定輸出的級(jí)別,-->
          <Root level="trace" includeLocation="true">
        <AppenderRef ref="log"></AppenderRef>
       <!-- <AppenderRef ref="Console"></AppenderRef> --> 
        </Root>
        <!-- 異步日志在程序的classpath需要加載disruptor-3.0.0.jar或者更高的版本凯旭。
        異步日志分為兩種:
        a.全異步模式
        這種異步日志方式概耻,不需要修改修改原理的配置文件,Logger仍然使用<root> and <logger>
        只需要在主程序代碼開(kāi)頭罐呼,加一句系統(tǒng)屬性的代碼:
        System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
        b.異步和非異步混合輸出模式
         在配置文件中Logger使用<asyncRoot> or <asyncLogger>
             -->
 </loggers>
</configuration>

①默認(rèn)配置文件名 log4j2-spring.xml鞠柄,一般放置在 src/main/resources 根目錄下即可 .
②如果自定義了文件名,需要在 application.properties 或者 application.yml 文件中配置:

// log4j2日志文件
logging.config=classpath:log4j2.xml
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嫉柴,一起剝皮案震驚了整個(gè)濱河市厌杜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌计螺,老刑警劉巖夯尽,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異登馒,居然都是意外死亡匙握,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)陈轿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)圈纺,“玉大人,你說(shuō)我怎么就攤上這事济欢≡拢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵法褥,是天一觀的道長(zhǎng)茫叭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)半等,這世上最難降的妖魔是什么揍愁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮杀饵,結(jié)果婚禮上莽囤,老公的妹妹穿的比我還像新娘。我一直安慰自己切距,他們只是感情好朽缎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般话肖。 火紅的嫁衣襯著肌膚如雪北秽。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天最筒,我揣著相機(jī)與錄音贺氓,去河邊找鬼。 笑死床蜘,一個(gè)胖子當(dāng)著我的面吹牛辙培,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邢锯,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扬蕊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弹囚?” 一聲冷哼從身側(cè)響起厨相,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸥鹉,沒(méi)想到半個(gè)月后蛮穿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毁渗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年践磅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灸异。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡府适,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肺樟,到底是詐尸還是另有隱情檐春,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布么伯,位于F島的核電站疟暖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏田柔。R本人自食惡果不足惜俐巴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硬爆。 院中可真熱鬧欣舵,春花似錦、人聲如沸缀磕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糟把,卻和暖如春赎线,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糊饱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颠黎,地道東北人另锋。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像狭归,于是被迫代替她去往敵國(guó)和親夭坪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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