springboot使用logback配置詳解

第一步:編寫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 超過後會生成一份新的日誌文件

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