SpringBoot Logback多環境日誌配置

SpringBoot是可以根據spring.profiles.actve屬性來指定啓用某個配置文件,Logback同樣可以與SpringBoot一樣,根據環境不通,啓用不通的日誌配置以及日誌級別配置。

一、application.yml配置:

logging:
  config: classpath:logback-${spring.profiles.active}.xml

二、創建logback-base.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<included>
    <springProperty scope="context" name="springAppName" source="spring.application.name"/>
    <property name="CONSOLE_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [${springAppName:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %-5level %logger - %msg%n"/>

    <appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="INFO-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/var/log/${springAppName}/info-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="ERROR-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/var/log/${springAppName}/error-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>


    <appender name="ASYNC-INFO-LOG" class="ch.qos.logback.classic.AsyncAppender" discardingThreshold="0">
        <appender-ref ref="INFO-LOG"/>
    </appender>

    <appender name="ASYNC-CONSOLE-LOG" class="ch.qos.logback.classic.AsyncAppender" discardingThreshold="0">
        <appender-ref ref="CONSOLE-LOG"/>
    </appender>

    <appender name="ASYNC-ERROR-LOG" class="ch.qos.logback.classic.AsyncAppender" discardingThreshold="0">
        <appender-ref ref="ERROR-LOG"/>
    </appender>

    <!-- 輸出到控制檯和文件,可定義更多的 Appender -->
    <root level="INFO">
        <appender-ref ref="ASYNC-CONSOLE-LOG"/>
        <appender-ref ref="ASYNC-INFO-LOG"/>
        <appender-ref ref="ASYNC-ERROR-LOG"/>
    </root>

</included>

<included> 標籤內的內容,相當於一段配置塊,其他logback-xxx.xml可以引用該logback-base.xml。減少不必要的重複配置。例如logback-dev.xml:

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <include resource="logback-base.xml"/>
    <logger name="org.springframework.security" level="DEBUG"/>
    <logger name="org.springframework.cache" level="DEBUG"/>
    <logger name="org.mybatis" level="ERROR"/>
    <logger name="com.test" level="DEBUG"/>
</configuration>

詳細的配置可參照logback官方文檔 logback文檔說明

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