Springboot Logback筆記

??之前習(xí)慣了日志配置文件粘貼復(fù)制。今天閑下來的時候,學(xué)習(xí)了Logback的配置新姿勢,以后不再盲目粘貼復(fù)制了够滑。由于Springboot中默認(rèn)的日志配置是Logback,因此本文中也只涉及Logback的配置吕世。

1. 配置整體結(jié)構(gòu)

<configuration scan="true" scanPeriod="60 seconds" debug="false">  
    <contextName>${maskwang-log}</contextName> 
    <appender>
        //xxxx
    </appender>   
    <logger>
        //xxxx
    </logger>
    <root>             
       //xxxx
    </root>  
</configuration>  

每個日志配置文件的配置都是上面這種形式彰触,基本的結(jié)果如下圖。其中scan表示是否定期掃描更新配置文件命辖,scanPeriod表示掃描的周期况毅,debug設(shè)置為true時,將打印出logback內(nèi)部日志信息尔艇,實時查看logback運行狀態(tài)尔许,默認(rèn)值為false。

  • appender 表示日志輸出的位置终娃,通常有輸出到控制臺的ConsoleAppender味廊,輸出到文體的FileAppenderRollingFileAppender
  • logger表示需要進(jìn)行自定義日志的位置棠耕,即在哪里打需要的日志余佛。通常像下面這樣自定義某個類需要的日志
<logger name="com.maskwang.controller" level="info"
            additivity="false">
        <appender-ref ref="infoAppender" />
</logger>
  • root 表示根logger,也是一種logger窍荧,且只有一個level屬性辉巡。沒有特別指定logger,那么都是采用root 的日志配置蕊退。
    日志.jpg

2. appender詳解

 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

這種是指定控制臺打印的appender郊楣,其中CONSOLE_LOG_PATTERN是自定義的日志打印格式,如[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n所示瓤荔。

<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路徑 净蚤,注意LOG_PATH是默認(rèn)值,
            它的配置對應(yīng)application.properties里的logging.path值-->
        <file>${LOG_PATH}/info/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名稱 -->
            <fileNamePattern>info/info-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 文件最大保存歷史數(shù)量 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
</appender>

這種是滾動文件文件的appender输硝,也就是每隔一天生成一個日志文件塞栅。

  • file表示存放日志文件的目錄。
  • rollingPolicy表示文件滾動的策略,fileNamePattern表示每個滾動文件的命名如info-2019-11-19.log放椰,MaxHistory保存的最大文件個數(shù),該例子中表示最多只保存30天的日志愉粤,舊的日志將會刪除砾医。
  • pattern表示日志文每條日志的格式如[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n
  • filter表示過濾不想要級別的日志衣厘。LevelFilter類表示過濾特定的級別如蚜,該例子中表示該appender只保存INFO級別的日志,其他的日志則忽略影暴。其實還有另外一種類ThresholdFilter错邦,表示只保存該級別或者該級別更高級別的日志。level表示日志級別型宙,onMatch表示如果匹配就記錄撬呢,并且不傳遞到下一個過濾器。onMismatch表示不匹配記錄且不傳遞到下一個過濾器妆兑。如果需要自定義過濾規(guī)則魂拦,則需要繼承Filter,實現(xiàn)decide方法,具體如didi的這篇文章Logback中如何自定義靈活的日志過濾規(guī)則

3. root詳解

  <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="warnAppender"/>
    </root>
  • root中通常只有level一個屬性搁嗓,表示默認(rèn)的日志級別芯勘。然后包括多個appender-ref來給不同級別的日志配置不同的appender。在沒有指定特殊的logger腺逛,所有按照root的格式輸出日志荷愕。

通過上面三部分,就可以自定義日志輸出棍矛。以下附一份完整的日志配置文件安疗,實現(xiàn)把info,`warn’級別的日志分別輸出到不同的文件中茄靠,且生成滾動日志茂契。

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

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!-- INFO -->
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路徑 ,注意LOG_PATH是默認(rèn)值慨绳,
            它的配置對應(yīng)application.properties里的logging.path值-->
        <file>${LOG_PATH}/info/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名稱 -->
            <fileNamePattern>info/info-%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <!-- 文件最大保存歷史數(shù)量 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- WARN -->
    <appender name="warnAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路徑 掉冶,注意LOG_PATH是默認(rèn)值,
            它的配置對應(yīng)application.properties里的logging.path值-->
        <file>${LOG_PATH}/warn/warn.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名稱 -->
            <fileNamePattern>warn/warn-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 文件最大保存歷史數(shù)量 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <logger name="com.maskwang.controller" level="info"
            additivity="false">
        <appender-ref ref="infoAppender" />
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="warnAppender"/>
    </root>

</configuration>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脐雪,一起剝皮案震驚了整個濱河市厌小,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌战秋,老刑警劉巖璧亚,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脂信,居然都是意外死亡癣蟋,警方通過查閱死者的電腦和手機(jī)透硝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疯搅,“玉大人濒生,你說我怎么就攤上這事♂E罚” “怎么了罪治?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長礁蔗。 經(jīng)常有香客問我觉义,道長,這世上最難降的妖魔是什么浴井? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任晒骇,我火速辦了婚禮,結(jié)果婚禮上滋饲,老公的妹妹穿的比我還像新娘厉碟。我一直安慰自己,他們只是感情好屠缭,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布箍鼓。 她就那樣靜靜地躺著,像睡著了一般呵曹。 火紅的嫁衣襯著肌膚如雪款咖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天奄喂,我揣著相機(jī)與錄音铐殃,去河邊找鬼。 笑死跨新,一個胖子當(dāng)著我的面吹牛富腊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播域帐,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赘被,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肖揣?” 一聲冷哼從身側(cè)響起民假,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎龙优,沒想到半個月后羊异,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年野舶,在試婚紗的時候發(fā)現(xiàn)自己被綠了易迹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡平道,死狀恐怖赴蝇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巢掺,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布劲蜻,位于F島的核電站陆淀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏先嬉。R本人自食惡果不足惜轧苫,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疫蔓。 院中可真熱鬧含懊,春花似錦、人聲如沸衅胀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滚躯。三九已至雏门,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掸掏,已是汗流浹背茁影。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留丧凤,地道東北人募闲。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像愿待,于是被迫代替她去往敵國和親浩螺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 在logback學(xué)習(xí)筆記(上)中我們介紹了logback中的一些核心概念呼盆,在這篇文章中我們共同來學(xué)習(xí)一下如何利用配...
    阿龍的學(xué)與思閱讀 1,676評論 0 3
  • Logback是log4j框架的作者開發(fā)的新一代日志框架年扩,它效率更高、能夠適應(yīng)諸多的運行環(huán)境访圃,同時天然支持SLF4...
    李2牛閱讀 4,099評論 0 16
  • 一:根節(jié)點包含的屬性: scan: 當(dāng)此屬性設(shè)置為true時厨幻,配置文件如果發(fā)生改變,將會被重新加載,默認(rèn)值為tru...
    把愛放下會走更遠(yuǎn)閱讀 632評論 0 0
  • 我是一只 潛于深海的魚 我的憂傷 已埋葬了許多年 很疼很疼 夢中你的眼神 如同一個吻 就在不遠(yuǎn)的岸邊 可是我沒有魚...
    寂靜的花香閱讀 275評論 2 3
  • 星期六的下午參加日本抹茶的靜修沙龍况脆。小小的房間整整齊齊饭宾,地上鋪了日式的榻榻米。幾位先到的朋友坐在蒲團(tuán)上等候了格了。 雖...
    Lily_Geng閱讀 279評論 0 0