spring boot logback配置說明(易懂)

前面看了網(wǎng)上的一些記錄片段記錄都不太完整也不友好,板磚過來簡單修改注釋和移除一些不必要的東西(如:彩色字體喊式,有毛用A敛堋)
springboot2.x 已經(jīng)給我們包含了logging包內(nèi)繼承了需要的log包,都是最合適的版本宅此,不需要自己maven導(dǎo)入秦踪。

開始:

resources目錄創(chuàng)建 logback-spring.xml 必須是這個 不然spring 不認(rèn).
你也可以自定義,修改入口配置logging.config=你的xml

logback-spring.xml內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <!-- 項(xiàng)目名稱 -->
    <property name="PROJECT_NAME" value="springBootDemoFull"/>

    <!--定義日志文件的存儲地址后面攔截器用到褐捻,禁止使用相對路徑-->
    <property name="LOG_HOME" value="/logs"/>

    <!-- 控制臺輸出 -->
    <!--appender的name屬性隨意命名-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 系統(tǒng)信息日志文件 appender -->
    <appender name="SYSTEM_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--過濾器,攔截INFO級別日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <!--記錄信息后退出椅邓,防止其他appender的filter繼續(xù)攔截日志記錄-->
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件輸出的文件名-->
            <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.info.%d{yyyyMMdd}.%i.log</FileNamePattern>
            <!--日志文件保留天數(shù)-->
            <MaxHistory>15</MaxHistory>
            <!--日志文件最大的大小-->
            <MaxFileSize>10MB</MaxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 系統(tǒng)錯誤日志文件 appender-->
    <appender name="SYSTEM_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--過濾器秧了,攔截ERROR級別日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <!--記錄信息后退出耙箍,防止其他appender的filter繼續(xù)攔截日志記錄-->
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件輸出的文件名乖订,如果按小時分割加入HH就行-->
            <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.error.%d{yyyyMMdd}.%i.log</FileNamePattern>
            <!--日志文件保留天數(shù)-->
            <MaxHistory>15</MaxHistory>
            <!--日志文件最大的大小-->
            <MaxFileSize>10MB</MaxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 自定義日志 -->
    <appender name="OTHER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 過濾器斥难,只打印INFO級別的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件輸出的文件名-->
            <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.other.%d{yyyyMMdd}.%i.log</FileNamePattern>
            <!--日志文件保留天數(shù)-->
            <MaxHistory>15</MaxHistory>
            <!--日志文件最大的大小-->
            <MaxFileSize>10MB</MaxFileSize>
        </rollingPolicy>

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--自定義日志加入一個別名other 引用的 appender 為 OTHER我們上面的appender的name屬性的value值 也就是說 在項(xiàng)目中 直接 getLogger("other") 即可-->
    <logger name="other" additivity="true">
        <appender-ref ref="OTHER"/>
    </logger>

    <!-- 來發(fā)環(huán)境下的appender注冊 -->
    <!--springProfile屬性為 application.properties中spring.profiles.active屬性的值 : dev 或 prod -->
    <springProfile name="dev">
        <!--將appender'加入的springboot中 必須使用root節(jié)點(diǎn)注冊 appender 如果appender沒有指定日志級別將使用root的默認(rèn)level屬性級別-->
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="SYSTEM_INFO"/>
            <appender-ref ref="SYSTEM_ERROR"/>
        </root>
    </springProfile>

    <!-- 生產(chǎn)環(huán)境下的appender注冊 -->
    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="SYSTEM_INFO"/>
            <appender-ref ref="SYSTEM_ERROR"/>
        </root>
    </springProfile>

</configuration>

入口配置文件 application.properties 配置
這里提醒一下引入其他配置文件必須使用spring.profiles.include 統(tǒng)一規(guī)范,為什么請看配置注釋

spring.application.name=springboot-demo-full
# 多個配置文件中有同一個值合住,以下情況獲取值的效果:
# 1.啟動命令不帶--spring.profiles.active參數(shù)以application.properties首先啟動
#  按順序所有文件第一個配置的spring.profiles.active屬性中指定的最后一個文件中含有該屬性的值為準(zhǔn)
#  如果所有文件都沒有spring.profiles.active绰精,
#  那么以pring.profiles.include配置的最后一個屬性文件中的值為準(zhǔn)
# 2.啟動命令帶--spring.profiles.active參數(shù)以參數(shù)指定的屬性文件首先啟動
#  此情況,以命令指定的配置文件中的值為準(zhǔn)透葛,其他文件中再配置spring.profiles.active也不會生效笨使,如果不存在值,那么會以pring.profiles.include指定的最后一個文件中的值為準(zhǔn)

##簡要說
#  啟動命令 java -jar name.jar --spring.profiles.active指定文件中的值優(yōu)先級高于
#  文件中spring.profiles.active指定的文件列表中最后一次出現(xiàn)的值 > 文件中spring.profiles.include指定的文件列表中最后一次出現(xiàn)的值
# 總結(jié)說明:建議所有引入配置的時候避免用相同的配置屬性 或 都使用 spring.profiles.include 覆蓋前面的值僚害,如果出現(xiàn)問題硫椰,查找問題也有規(guī)律可循。
spring.profiles.include=druid,mybatis
# 生產(chǎn)環(huán)境修改為prod
spring.profiles.active=dev 

代碼中使用的時候切記別導(dǎo)錯了包,包為:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

1.走INFO 和ERROR的攔截器 
 Logger logger = LoggerFactory.getLogger(xxxx.class);
 logger.info(msg);
 logger.error(msg);
2.走自定義攔截器的
 Logger logger = LoggerFactory.getLogger("other");
 logger.info(msg);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末最爬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子门岔,更是在濱河造成了極大的恐慌爱致,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寒随,死亡現(xiàn)場離奇詭異糠悯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妻往,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門互艾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讯泣,你說我怎么就攤上這事纫普。” “怎么了好渠?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵昨稼,是天一觀的道長。 經(jīng)常有香客問我拳锚,道長假栓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任霍掺,我火速辦了婚禮匾荆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杆烁。我一直安慰自己牙丽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布兔魂。 她就那樣靜靜地躺著剩岳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪入热。 梳的紋絲不亂的頭發(fā)上拍棕,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機(jī)與錄音勺良,去河邊找鬼绰播。 笑死,一個胖子當(dāng)著我的面吹牛尚困,可吹牛的內(nèi)容都是我干的蠢箩。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谬泌!你這毒婦竟也來了滔韵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤掌实,失蹤者是張志新(化名)和其女友劉穎陪蜻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贱鼻,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宴卖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了邻悬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症昏。...
    茶點(diǎn)故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖父丰,靈堂內(nèi)的尸體忽然破棺而出肝谭,到底是詐尸還是另有隱情,我是刑警寧澤蛾扇,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布分苇,位于F島的核電站,受9級特大地震影響屁桑,放射性物質(zhì)發(fā)生泄漏医寿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一蘑斧、第九天 我趴在偏房一處隱蔽的房頂上張望靖秩。 院中可真熱鬧,春花似錦竖瘾、人聲如沸沟突。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惠拭。三九已至,卻和暖如春庸论,著一層夾襖步出監(jiān)牢的瞬間职辅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工聂示, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留域携,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓鱼喉,卻偏偏與公主長得像秀鞭,于是被迫代替她去往敵國和親趋观。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評論 2 361

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