springboot3.4.5 log4j2 日志配置
一、引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
二、配置文件(文件名:log4j2-spring.xml)
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" monitorInterval="30"> <Properties> <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Property> <Property name="LOG_DIR">logs</Property> <Property name="APP_NAME">demo-app</Property> </Properties> <Appenders> <!-- 控制台输出 --> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="${LOG_PATTERN}"/> </Console> <!-- 文件滚动日志 --> <RollingFile name="File" fileName="${LOG_DIR}/${APP_NAME}.log" filePattern="${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log"> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <!-- 保留最近10天的日志 --> <DefaultRolloverStrategy max="10"/> </RollingFile> </Appenders> <Loggers> <!--全局默认设置--> <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="File"/> </Root> <!-- 特定包或类的日志级别 MyBatis SQL 日志(DEBUG 级别)--> <Logger name="com.example.mapper" level="debug" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="File"/> </Logger> </Loggers> </Configuration>
三、使用
1、类上面加注解 @Slf4j
2、语法
log.info("{},你好,{}", "小明", "小黑");
log.info("%s,你好,%s".formatted( "小明", "小黑"));
四、配合yaml使用
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" monitorInterval="30"> <Properties> <!-- 改用 Spring 占位符,从 application.yml 读取配置 --> <Property name="LOG_PATTERN">${logging.pattern: %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n}</Property> <Property name="LOG_DIR">${logging.path:logs}</Property> <Property name="APP_NAME">${spring.application.name:demo-app}</Property> </Properties> <Appenders> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="${LOG_PATTERN}"/> </Console> <RollingFile name="File" fileName="${LOG_DIR}/${APP_NAME}.log" filePattern="${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log"> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <DefaultRolloverStrategy max="${logging.file.max-history:10}"/> </RollingFile> </Appenders> <Loggers> <Root level="${logging.level.root:info}"> <AppenderRef ref="Console"/> <AppenderRef ref="File"/> </Root> <!-- 多环境适配:开发环境 debug,生产环境 info --> <Logger name="com.example.mapper" level="#{springProfile('dev') ? 'debug' : 'info'}" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="File"/> </Logger> </Loggers> </Configuration>
# application.yml
spring:
application:
name: demo-app # 对应 LOG4J2 中的 APP_NAME
logging:
path: ./logs # 对应 LOG_DIR
level:
root: info
com.example.mapper: debug # 开发环境
file:
max-history: 10 # 日志保留天数
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"

浙公网安备 33010602011771号