SpringBoot LogBack配置

<?xml version="1.0" encoding="UTF-8"?>
<!--
-scan:當此屬性設置為true時,配置文件如果發(fā)生改變发皿,將會被重新加載丁稀,默認值為true

-scanPeriod:設置監(jiān)測配置文件是否有修改的時間間隔,如果沒有給出時間單位碧查,默認單位是毫秒。
-           當scan為true時,此屬性生效梢灭。默認的時間間隔為1分鐘

-debug:當此屬性設置為true時饼灿,將打印出logback內(nèi)部日志信息幕侠,實時查看logback運行狀態(tài)。默認值為false碍彭。

- configuration 子節(jié)點為 appender晤硕、logger、root
-->
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>

    <!-- 日志根目錄 對于分布式項目最好以 項目名/工程名 這樣就能快速準確的找到對應的日志-->
    <springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="E:/test/logback"/>

    <!-- 日志文件名稱-->
    <property name="LOG_PREFIX" value="log" />

    <!-- 日志文件編碼-->
    <property name="LOG_CHARSET" value="UTF-8" />

    <!-- 日志文件路徑+日期-->
    <property name="LOG_DIR" value="${LOG_HOME}/%d{yyyyMMdd}" />

    <!--對日志進行格式化-->
    <property name="LOG_MSG" value="- | [%X{requestUUID}] | [%d{yyyyMMdd HH:mm:ss.SSS}] | [%level] | [${HOSTNAME}] | [%thread] | [%logger{36}] | --> %msg|%n "/>

    <!--文件大小庇忌,默認10MB-->
    <property name="MAX_FILE_SIZE" value="1KB" />
    <!--<property name="MAX_FILE_SIZE" value="50MB" />-->

    <!-- 配置日志的滾動時間 舞箍,表示只保留最近 10 天的日志-->
    <property name="MAX_HISTORY" value="10"/>


    <!--輸出到控制臺-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 輸出的日志內(nèi)容格式化-->
        <encoder>
            <pattern>${LOG_MSG}</pattern>
            <charset>${LOG_CHARSET}</charset>
        </encoder>
    </appender>

    <!-- 定義 ERROR 日志的輸出到文件:-->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!--<append>true</append>
        append: true,日志被追加到文件結(jié)尾; false,清空現(xiàn)存文件;默認是true-->

        <!--下面為配置只輸出error級別的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <OnMismatch>DENY</OnMismatch>
            <OnMatch>ACCEPT</OnMatch>
        </filter>
        <!--日志文件路徑,日志文件名稱-->
        <!--<File>${LOG_DIR}</File>-->

        <!--設置滾動策略皆疹,當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候疏橄,新的內(nèi)容寫入新的文件, 默認10MB -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!--日志文件路徑略就,新的 ERR 日志文件名稱捎迫,“ i ” 是個變量 -->
            <FileNamePattern>${LOG_DIR}/error_${LOG_PREFIX}_%i.log</FileNamePattern>

            <!--配置日志的滾動時間 ,表示只保留最近 10 天的日志-->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>

            <!--當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候表牢,新的內(nèi)容寫入新的文件窄绒, 默認10MB-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <!--輸出的日志內(nèi)容格式化-->
        <encoder>
            <pattern>${LOG_MSG}</pattern>
            <charset>${LOG_CHARSET}</charset>
        </encoder>
    </appender>

    <!--定義 DEBUG 日志的輸出到文件:-->
    <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!--<append>true</append>
        append: true,日志被追加到文件結(jié)尾; false,清空現(xiàn)存文件;默認是true-->

        <!--下面為配置只輸出debug級別的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <OnMismatch>DENY</OnMismatch>
            <OnMatch>ACCEPT</OnMatch>
        </filter>
        <!--日志文件路徑,日志文件名稱-->
        <!--<File>${LOG_DIR}</File>-->

        <!--設置滾動策略崔兴,當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候彰导,新的內(nèi)容寫入新的文件, 默認10MB -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!--日志文件路徑敲茄,新的 ERR 日志文件名稱位谋,“ i ” 是個變量-->
            <FileNamePattern>${LOG_DIR}/debug_${LOG_PREFIX}_%i.log</FileNamePattern>

            <!--配置日志的滾動時間 ,表示只保留最近 10 天的日志-->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>

            <!--當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候折汞,新的內(nèi)容寫入新的文件倔幼, 默認10MB-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <!--輸出的日志內(nèi)容格式化-->
        <encoder>
            <pattern>${LOG_MSG}</pattern>
            <charset>${LOG_CHARSET}</charset>
        </encoder>
    </appender>

    <!-- 定義 INFO 日志的輸出到文件:-->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!--<append>true</append>
        append: true,日志被追加到文件結(jié)尾; false,清空現(xiàn)存文件;默認是true-->

        <!--下面為配置只輸出debug級別的日志-->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <OnMismatch>DENY</OnMismatch>
            <OnMatch>ACCEPT</OnMatch>
        </filter> -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!--過濾掉TRACE和DEBUG級別的日志 -->
            <level>INFO</level>
        </filter>

        <!--日志文件路徑,日志文件名稱-->
        <!--<File>${LOG_DIR}/info_${LOG_PREFIX}.log</File>-->

        <!--設置滾動策略爽待,當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候损同,新的內(nèi)容寫入新的文件翩腐, 默認10MB -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!--日志文件路徑,新的 ERR 日志文件名稱膏燃,“ i ” 是個變量 -->
            <!--<FileNamePattern>${LOG_DIR}/archived/log_%d{dd-MM-yyyy}_%i.log</FileNamePattern>-->
            <FileNamePattern>${LOG_DIR}/info_${LOG_PREFIX}_%i.log</FileNamePattern>

            <!--配置日志的滾動時間 茂卦,表示只保留最近 10 天的日志-->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>

            <!--當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候,新的內(nèi)容寫入新的文件组哩, 默認10MB-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <!-- 輸出的日志內(nèi)容格式化-->
        <encoder>
            <pattern>${LOG_MSG}</pattern>
            <charset>${LOG_CHARSET}</charset>
        </encoder>
    </appender>

    <!-- 自定義日志的輸出到文件:-->
    <appender name="gordon_controller" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_DIR}/gordon_controller_${LOG_PREFIX}_%i.log</FileNamePattern>
            <!--配置日志的滾動時間 等龙,表示只保留最近 10 天的日志-->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>${LOG_MSG}</pattern>
            <charset>${LOG_CHARSET}</charset>
        </encoder>
    </appender>

    <!-- 自定義日志的輸出到文件:-->
    <appender name="gordon_propertiesTest" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_DIR}/gordon_properties_${LOG_PREFIX}_%i.log</FileNamePattern>
            <!--配置日志的滾動時間 ,表示只保留最近 10 天的日志-->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>${LOG_MSG}</pattern>
            <charset>${LOG_CHARSET}</charset>
        </encoder>
    </appender>

    <!--<logger name="com.gordon.controller" level="DEBUG" additivity="false">
        <appender-ref ref="gordon_controller"></appender-ref>
    </logger>
    不能直接在這里寫additivity=“false”,否則只會記錄到文件中而不在控制臺打印伶贰。
    解決辦法:看下面的多環(huán)境配置<springProfile></springProfile>
    <logger name="com.gordon.propertiesTest" level="DEBUG" additivity="false">
        <appender-ref ref="gordon_propertiesTest"></appender-ref>
    </logger>-->

    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="ERROR" />
        <appender-ref ref="DEBUG" />
        <appender-ref ref="INFO" />
    </root>
    
    <!-- additivity 設為false,則logger內(nèi)容不附加至root 蛛砰,配置以配置包下的所有類的日志的打印,級別是 ERROR-->
    <logger name="org.springframework"     level="ERROR" />
    <logger name="org.apache.commons"      level="ERROR" />
    <logger name="org.apache.zookeeper"    level="ERROR"  />
    <logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
    <logger name="com.alibaba.dubbo.remoting" level="ERROR" />


    <!-- 測試環(huán)境+開發(fā)環(huán)境. 多個使用逗號隔開. -->
    <springProfile name="test,dev">
        <!--logger可定義出分包分文件存儲日志黍衙,如下:-->
        <logger name="com.gordon.controller" level="DEBUG" additivity="true">
            <appender-ref ref="gordon_controller"></appender-ref>
        </logger>
        <!--開發(fā)/測試環(huán)境 設置additivity="true"為了能在控制臺中打印出信息
            其實這些在開發(fā)/測試環(huán)境都可以不配泥畅,因為addivity=“true"后,這些配置根本沒有生效琅翻,
            而是直接將信息上傳到root根節(jié)點去了位仁,網(wǎng)上說會打印兩次,我這里是springboot2.0.3卻只打印一次方椎,
            而且日志也沒有記錄到所配置的文件中聂抢,但卻記錄在ERROR,DEBUG,INFO配置的文件中。
        -->
        <logger name="com.gordon.propertiesTest" level="DEBUG" additivity="true">
            <appender-ref ref="gordon_propertiesTest"></appender-ref>
        </logger>
    </springProfile>
    <!-- 生產(chǎn)環(huán)境. -->
    <springProfile name="prod">
        <logger name="com.gordon.controller" level="DEBUG" additivity="false">
            <appender-ref ref="gordon_controller"></appender-ref>
        </logger>
        <!--生產(chǎn)環(huán)境 設置additivity="false"只記錄到日志文件中-->
        <logger name="com.gordon.propertiesTest" level="DEBUG" additivity="false">
            <appender-ref ref="gordon_propertiesTest"></appender-ref>
        </logger>
    </springProfile>

</configuration>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棠众,一起剝皮案震驚了整個濱河市琳疏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摄欲,老刑警劉巖轿亮,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疮薇,死亡現(xiàn)場離奇詭異胸墙,居然都是意外死亡,警方通過查閱死者的電腦和手機按咒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門迟隅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人励七,你說我怎么就攤上這事智袭。” “怎么了掠抬?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵吼野,是天一觀的道長。 經(jīng)常有香客問我两波,道長瞳步,這世上最難降的妖魔是什么闷哆? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮单起,結(jié)果婚禮上抱怔,老公的妹妹穿的比我還像新娘。我一直安慰自己嘀倒,他們只是感情好屈留,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著测蘑,像睡著了一般灌危。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碳胳,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天乍狐,我揣著相機與錄音,去河邊找鬼固逗。 笑死浅蚪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的烫罩。 我是一名探鬼主播惜傲,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贝攒!你這毒婦竟也來了盗誊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤隘弊,失蹤者是張志新(化名)和其女友劉穎哈踱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梨熙,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡开镣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了咽扇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邪财。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖质欲,靈堂內(nèi)的尸體忽然破棺而出树埠,到底是詐尸還是另有隱情,我是刑警寧澤嘶伟,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布怎憋,位于F島的核電站,受9級特大地震影響九昧,放射性物質(zhì)發(fā)生泄漏绊袋。R本人自食惡果不足惜赠橙,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愤炸。 院中可真熱鬧期揪,春花似錦、人聲如沸规个。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诞仓。三九已至缤苫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間墅拭,已是汗流浹背活玲。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谍婉,地道東北人舒憾。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像穗熬,于是被迫代替她去往敵國和親镀迂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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