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文档说明 。