-
Spring Boot 整合 Log4j2 指南_spring boot slf4j logback
- 网站名称:Spring Boot 整合 Log4j2 指南_spring boot slf4j logback
- 网站分类:技术文章
- 收录时间:2025-09-23 16:58
- 网站地址:
“Spring Boot 整合 Log4j2 指南_spring boot slf4j logback” 网站介绍
Spring Boot 整合 Log4j2 指南
Spring Boot 默认使用 Logback 作为日志框架,但在高并发、异步日志、灵活配置等场景下,Log4j2 具有更高的性能和更丰富的特性。下面介绍如何在 Spring Boot 项目中切换并集成 Log4j2。
1. 排除默认的 Logback 并添加 Log4j2 依赖
在 pom.xml 中排除默认的
spring-boot-starter-logging,并引入 Log4j2:
<dependencies>
<!-- 排除 Spring Boot 默认的 logging (Logback) -->
<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>
<!-- 添加 Log4j2 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
2. 创建 Log4j2 配置文件
在 src/main/resources 下创建 log4j2.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} %5p [%t] %-40.40c{1.} : %m%n%ex
</Property>
<Property name="LOG_PATH">logs</Property>
<Property name="LOG_FILE_NAME">app</Property>
</Properties>
<Appenders>
<!-- 控制台输出 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<!-- 滚动文件输出 -->
<RollingFile name="File" fileName="${LOG_PATH}/${LOG_FILE_NAME}.log"
filePattern="${LOG_PATH}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<!-- 项目包日志 -->
<Logger name="com.yourpackage" level="debug" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Logger>
<!-- 框架日志 -->
<Logger name="org.springframework" level="info"/>
<Logger name="org.hibernate" level="warn"/>
<!-- Root 日志 -->
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
3. 使用日志记录
在 Java 类中使用 Log4j2 记录日志:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
private static final Logger logger = LogManager.getLogger(MyController.class);
@GetMapping("/test")
public String test() {
logger.trace("This is a TRACE message");
logger.debug("This is a DEBUG message");
logger.info("This is an INFO message");
logger.warn("This is a WARN message");
logger.error("This is an ERROR message");
return "Check the logs!";
}
}
4. 高级配置选项
4.1 按环境使用不同配置
在 application.properties 或 application.yml 中指定不同环境的配置文件:
logging.config=classpath:log4j2-dev.xml
4.2 异步日志提升性能
添加依赖:
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.4</version>
</dependency>
修改配置为异步日志:
<AsyncLogger name="com.yourpackage" level="debug" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</AsyncLogger>
4.3 YAML 或 JSON 配置
除了 XML,还可以用 log4j2.yaml:
Configuration:
status: warn
monitorInterval: 30
Appenders:
Console:
name: Console
target: SYSTEM_OUT
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] %-40.40c{1.} : %m%n%ex"
Loggers:
Root:
level: info
AppenderRef:
- ref: Console
5. 常见问题排查
- 日志冲突:确认已排除 spring-boot-starter-logging
- 配置不生效:检查 log4j2.xml 是否放在 resources 根目录
- 日志级别无效:检查是否存在多个配置文件
通过以上步骤,你就能在 Spring Boot 中无缝切换到 Log4j2,并灵活地定制日志输出,提升系统的性能和可维护性。
更多相关网站
- 90后注意了!你们出生时就有这么多时髦的鞋子你造么!
- 110 个主流 Java 组件和框架整理,常用的都有,建议收藏!!
- “老气”单品也可以很时髦_老气很 啥意思
- Log4j2的升级指南_log4j2 level
- 从Log4j2核弹漏洞到性能碾压:为什么现在都用Logback?
- 知识总结-Java日志框架Log4j、Log4j2、logback、slf4j、简介
- Java框架研发思考_java做框架
- Java项目如何统一日志框架?_java 日志框架
- 干掉Logback,试试这款性能最强的日志框架
- 详解C++高性能无锁队列的原理与实现
- 高性能队列Disruptor的初体验!_java高性能队列
- 我用半天时间解决了困扰团队一年多的cpu使用率过高问题
- Disruptor核心组件_核心处理组件
- Disruptor框架源码阅读-如何不重复消费
- 高性能并发队列Disruptor使用详解
- 最近发表
- 标签列表
-
- mydisktest_v298 (35)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- 梦幻诛仙表情包 (36)
- java面试宝典2019pdf (26)
- disk++ (30)
- 加密与解密第四版pdf (29)
- iteye (26)
- centos7.4下载 (32)
- intouch2014r2sp1永久授权 (33)
- jdk1.8.0_191下载 (27)
- axure9注册码 (30)
- 兔兔工程量计算软件下载 (27)
- ccproxy破解版 (31)
- aida64模板 (28)
- engine=innodb (33)
- shiro jwt (28)
- segoe ui是什么字体 (27)
- head first java电子版 (32)
- clickhouse中文文档 (28)
- jdk-8u181-linux-x64.tar.gz (32)
- 计算机网络自顶向下pdf (34)
- -dfile.encoding=utf-8 (33)
- jdk1.9下载 (32)