自定義日誌配置
spring boot2.2.4官方文檔
logback中文文檔
1)spring boot可以適應所有日誌框架,只需在類路徑下包含相應的依賴來激活各種日誌系統。
2)spring boot底層使用slf4j + logback框架來實現日誌記錄,所以如果想要自定義logback配置,就無需添加相關依賴了(spring-booot-stater中已包含相關依賴)
3)在類路徑下放置自定義日誌配置文件(xml配置文件),spring boot就不會使用它本身的默認日誌配置了
4)上圖是spring boot官方文檔的提示內容,意思是:根據您的日誌記錄系統,將加載相應的文件使用。即如果我們使用logback日誌框架,那麼可以使用logback-spring.xml
、logback-spring.groovy
、logback.xml
、logback.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>