第一步:編寫logback-spring.xml日誌配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds">
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 日誌輸出控制檯格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--日誌文件輸出格式-->
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- test文件路徑 -->
<property name="TEST_FILE_PATH" value="./test_log" />
<!-- prod文件路徑 -->
<property name="PROD_FILE_PATH" value="./log" />
<!--文件名稱-->
<property name="LOG_NAME" value="data-manage" />
<!-- 開發環境 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
<!-- 測試環境 -->
<springProfile name="test">
<!-- 每天產生一個文件 -->
<appender name="TEST_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${TEST_FILE_PATH}${file.separator}${LOG_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${TEST_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="TEST_FILE" />
</root>
</springProfile>
<!-- 生產環境 -->
<springProfile name="prod">
<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${PROD_FILE_PATH}${file.separator}${LOG_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${PROD_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="PROD_FILE" />
</root>
</springProfile>
</configuration>
第二步:配置日誌文件位置
到此這樣就配置好了!
配置文件解析
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
這一塊是springboot默認的logback日誌在控制檯的打印效果,如果不配置,控制檯就沒有顏色區分比如
有顏色區分:
無顏色區分:
<!-- 日誌輸出控制檯格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--日誌文件輸出格式-->
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- test文件路徑 -->
<property name="TEST_FILE_PATH" value="./test_log" />
<!-- prod文件路徑 -->
<property name="PROD_FILE_PATH" value="./log" />
<!--文件名稱-->
<property name="LOG_NAME" value="data-manage" />
這一塊是自定義的屬性 CONSOLE_LOG_PATTERN和FILE_LOG_PATTERN是定義的日誌的控制檯輸
出格式和文件輸出格式,這是springboot默認的 需要自定義的也可以自己定義 網上一大堆。
TEST_FILE_PATH、PROD_FILE_PATH、LOG_NAME是生成文件日誌的時候的路徑和名稱
<!-- 開發環境 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
這是在控制打印日誌的配置
<!-- 生產環境 -->
<springProfile name="prod">
<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${PROD_FILE_PATH}${file.separator}${LOG_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${PROD_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="PROD_FILE" />
</root>
</springProfile>
這是輸入日誌文件的配置
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
pattern屬性配置是日誌的輸出格式,是我們之前自定義的
<file>${PROD_FILE_PATH}${file.separator}${LOG_NAME}.log</file>
file屬性配置的日誌文件輸出的路徑和名稱
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${PROD_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
fileNamePattern屬性也是日誌文件輸出的名稱和格式,表示一天生成一份日誌文件,它會把file屬性生成的日誌文件LOG_NAME.log 在每天的凌晨改成LOG_NAME-yyyy-MM-dd.log
例如:2020年3月20日生成日誌文件test.log,當天的日誌記錄信息都會記錄在test.log中,當3月21日凌晨的時候會把3月20日test.log改成test-2020-03-20.log,同時會生成一份新的test.log,此配置是一天生成一份日誌文件,當然也可以改成一個小時生成一份日誌文件。
maxHistory屬性表示日誌保存的有效日期爲30天
maxFileSize屬性表示日誌的大小最多爲100MB 超過後會生成一份新的日誌文件