步骤1:去除默认的logback依赖
由于springboot默认引入logback包,需要进行排包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.6</version>
<exclusions>
<!-- 引入log4j日志时需去掉默认的logback -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
步骤2:在application.yml配置logging.config配置项
logging:
# Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback.
# 日志记录配置文件的位置。 例如,Logback 的“classpath:logback.xml”。 再例如如果配置不同的配置文件(log4j2-dev.xml 可以自定义)可以设置不同的环境日志
config: classpath:log4j2.xml
步骤3:创建log4j2.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="info">
<Properties>
<!-- 声明日志文件存储的目录 -->
<Property name="LOG_HOME">/Users/ivan/export/Logs/springdemo</Property>
<Property name="APP_NAME">springdemo</Property>
<Property name="LOG_PATTERN"
value="%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread][%class{36}:%line] - %msg%n"></Property>
</Properties>
<Appenders>
<!--输出控制台的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出日志的格式-->
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<!--输出日志到文件的配置,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面-->
<RollingFile name="RollingFile" fileName="${LOG_HOME}/${APP_NAME}.log"
filePattern="${LOG_HOME}/%d{yyyy-MM}/%d{yyyy-MM-dd}_%i.log">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出日志的格式-->
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<!-- 最多保留文件数 -->
<DefaultRolloverStrategy max="365"/>
</RollingFile>
</Appenders>
<!--然后定义Logger,只有定义了Logger并引入的Appender,Appender才会生效。Root中level配置了日志级别,可配置其他级别-->
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</configuration>
完成以上步骤 启动即可