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文檔說明 。