在 java 项目中配置 log4j2,核心做法是引入 log4j2-api 和 log4j2-core 依赖,并在类路径下放置 log4j2.xml 或 log4j2.json 配置文件。通过定义 appender 指定输出目标(如控制台或文件),并配置 logger 设置日志级别与附加器关联,即可实现结构化日志记录。

Log4j2 的 Maven 依赖如何添加
要使用 Log4j2,必须在构建工具中声明两个主要依赖:log4j-api 提供标准接口,log4j-core 提供具体实现。通常还需要排除 Spring Boot 等框架默认集成的旧版日志框架以避免冲突。

<dependency><groupid>org.apache.logging.log4j</groupid><artifactid>log4j-api</artifactid><version>2.20.0</version></dependency><dependency><groupid>org.apache.logging.log4j</groupid><artifactid>log4j-core</artifactid><version>2.20.0</version></dependency>
上述配置引入了最新稳定版的 API 和 Core。若项目基于 Spring Boot,需确保 spring-boot-starter-logging 被排除,因为 Spring Boot 默认使用 Logback。引入后,类路径中即包含 Log4j2 的核心组件,程序启动时会自动扫描配置文件。
基础配置文件 log4j2.xml 结构是怎样的
基础的 log4j2.xml 文件由 Configuration 根节点组成,内部包含 Appenders 和 Loggers 两个主要部分。Appenders 定义日志输出目的地,如 Console 或 File;Loggers 定义日志级别及关联的 Appender。

<?xml version="1.0" encoding="UTF-8"?><configuration status="WARN"><appends><console name="Console" target="SYSTEM_OUT"><patternlayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"></patternlayout></console></appends><loggers><root level="info"><appenderref ref="Console"></appenderref></root></loggers></configuration>
该配置创建了一个名为 Console 的控制台附加器,使用模式布局打印时间、线程、级别、类名和消息。根 Logger 设置为 info 级别,并将日志发送给 Console。当程序运行时,所有 INFO 及以上级别的日志都会打印到标准输出。
如何配置按天滚动的文件日志输出
在实际生产环境中,通常需要将日志写入文件并按天滚动。这需要在 Appenders 中添加 RollingFile,并配置 Policies 和 Strategy 来控制滚动行为。
<?xml version="1.0" encoding="UTF-8"?><configuration status="WARN"><appends><rollingfile name="RollingFile" filename="logs/app.log" filepattern="logs/app-%d{yyyy-MM-dd}.log.gz"><patternlayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"></patternlayout><policies><timebasedtriggeringpolicy interval="1"></timebasedtriggeringpolicy></policies></rollingfile></appends><loggers><root level="info"><appenderref ref="RollingFile"></appenderref></root></loggers></configuration>
此配置将日志输出到 logs/app.log,当日志文件变更日期时,自动压缩旧文件为 app-yyyy-MM-dd.log.gz。TimeBasedTriggeringPolicy 确保每天触发一次滚动。这种配置避免了单一日志文件无限增长,便于归档和分析。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











