spring boot—自定義logback日誌配置

自定義日誌配置

spring boot2.2.4官方文檔
logback中文文檔

   1)spring boot可以適應所有日誌框架,只需在類路徑下包含相應的依賴來激活各種日誌系統。

   2)spring boot底層使用slf4j + logback框架來實現日誌記錄,所以如果想要自定義logback配置,就無需添加相關依賴了(spring-booot-stater中已包含相關依賴)

   3)在類路徑下放置自定義日誌配置文件(xml配置文件),spring boot就不會使用它本身的默認日誌配置了
cd4356
   4)上圖是spring boot官方文檔的提示內容,意思是:根據您的日誌記錄系統,將加載相應的文件使用。即如果我們使用logback日誌框架,那麼可以使用logback-spring.xmllogback-spring.groovylogback.xmllogback.groovy之一作爲配置文件來加載。

   5)spring boot官方建議使用logback-spring.xml作爲logback框架的日誌配置文件(例如:使用logback-spring.xml而不是logback.xml),因爲帶-spring後綴的配置文件可以使用spring boot提供的一些高級功能,如profile多環境日誌輸出

<springProfile name="staging">
    <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>

<springProfile name="dev | staging">
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>

<springProfile name="!production">
    <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

logback-spring.xml

<?xml version="1.0" encoding="utf-8" ?>
<!--
1) 根節點<configuration>,包含下面三個屬性:
    scan: 當此屬性設置爲true時,配置文件如果發生改變,將會被重新加載,默認值爲true。
    scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。
    debug: 當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。-->
<configuration scan="true" scanPeriod="60" debug="false">

    <!--控制檯輸出日誌格式-->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss} -- %-5level -- [%thread] -- %logger{50} --- %msg %n}"/>
    <!--文件輸出日誌格式-->
    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd hh:mm:ss} -- %-5level -- [%thread] -- %logger{50} --- %msg %n}"/>

    <!--
        Appender: 設置日誌信息的去向,常用的有以下幾個
           1) ch.qos.logback.core.ConsoleAppender (控制檯)
           2) ch.qos.logback.core.rolling.RollingFileAppender (文件大小到達指定尺寸的時候產生一個新文件)
           3) ch.qos.logback.core.FileAppender (文件)
    -->

    <!--控制檯配置-->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
         <!--當環境是dev開發環境時,這部分配置才生效-->
         <springProfile name="dev">
             <!--日誌輸出格式-->
             <encoder>
                 <pattern>${CONSOLE_LOG_PATTERN}</pattern>
             </encoder>
         </springProfile>
         <!--當環境不是dev開發環境時,這部分配置才生效-->
         <springProfile name="!dev">
             <!--日誌輸出格式-->
             <encoder>
                 <pattern>--%logger{50} --- %msg %n</pattern>
             </encoder>
         </springProfile>
    </appender>

    <!--日誌記錄文件配置-->
    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--當環境是production生產環境時,這部分配置才生效
                即在production生產環境上,我們纔將日誌信息記錄到日誌文件中-->
        <springProfile name="production">
            <!--日誌文件保存路徑,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建 -->-->
            <file>D:\idea\logs\example-logging.log</file>
            <!--基於大小和時間的輪轉策略,當日志內容超出文件大小限制後,會自動生成一個文件來繼續記錄和重命名-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!--當日志內容超出文件大小限制後,會自動生成一個文件來繼續記錄,文件按下面格式命名-->
                <fileNamePattern>D:\idea\logs\example-logging-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
                <!--文件最大限制,默認10MB-->
                <maxFileSize>10MB</maxFileSize>
                <!--文件最大保存週期,默認7天-->
                <maxHistory>7</maxHistory>
                <!--所有歸檔文件總的大小限制-->
                <totalSizeCap>20GB</totalSizeCap>
            </rollingPolicy>
            <!--日誌輸出格式-->
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
        </springProfile>
    </appender>

    <!--
        用來設置某一個包或者具體的某一個類的日誌打印級別、以及指定<appender>。
        <logger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性
        name:
            用來指定受此logger約束的某一個包或者具體的某一個類。
        level:
            用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
            如果未設置此屬性,那麼當前logger將會繼承上級的級別。
        additivity:
            是否向上級logger傳遞打印信息。默認是true。
        <logger>可以包含零個或多個<appender-ref>元素,標識這個appender將會添加到這個logger
    -->
    <logger name="com.cd.example.one" level="trace"/>
    <logger name="com.cd.example.two" level="debug"/>
    <logger name="com.cd.example.three" level="warn"/>

    <!--
        root節點是必選節點,用來指定最基礎的日誌輸出級別,只有一個level屬性。
            <root>可以包含零個或多個<appender-ref>元素,標識這個appender將會添加到這個logger
            使該指定的appender生效
    -->
    <root level="info">
        <appender-ref ref="consoleAppender"/>
        <appender-ref ref="fileAppender"/>
    </root>

</configuration>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章