maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logback</artifactId>
</dependency>
application.yml
logging:
config: classpath:logback-spring.xml
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<springProperty name="log_name" source="spring.application.name"/>
<property name="log_charset" value="utf-8"/>
<property name="log_level" value="info"/>
<property name="log_format"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %clr(%-5level){green} %-5.5L %clr(%-40.40logger{36}){cyan} : %clr(%M){magenta} - %msg%xEx%n"/>
<property name="log_filePath" value="${log_name}/logs"/>
<property name="log_maxHistory" value="30"/>
<property name="log_maxFileSize" value="5MB"/>
<property name="log_file_format"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-5.5L %-40.40logger{36} : %M - %msg%xEx%n"/>
<property name="log_sql" value="org.example.mapper"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>${log_charset}</charset>
<pattern>${log_format}</pattern>
</encoder>
</appender>
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log_filePath}/info-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxHistory>${log_maxHistory}</maxHistory>
<maxFileSize>${log_maxFileSize}</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>${log_file_format}</pattern>
<charset>${log_charset}</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="asyncAppender" class="ch.qos.logback.classic.AsyncAppender">
<queueSize>1024</queueSize>
<discardingThreshold>0</discardingThreshold>
<includeCallerData>false</includeCallerData>
<neverBlock>true</neverBlock>
<appender-ref ref="fileAppender"/>
</appender>
<logger name="${log_sql}" level="debug"/>
<springProfile name="dev|test">
<root level="${log_level}">
<appender-ref ref="consoleAppender"/>
<appender-ref ref="asyncAppender"/>
</root>
</springProfile>
<springProfile name="prod">
<root level="${log_level}">
<appender-ref ref="asyncAppender"/>
</root>
</springProfile>
</configuration>