如何消除Log4j2中‘包扫描定位插件已废弃’的警告日志?
解决Log4j 2.x包扫描弃用警告问题
这个警告是因为Log4j 2.10+版本开始,默认通过包扫描定位插件的机制被标记为弃用,未来会移除。以下是两种有效解决方式:
方法一:添加Log4j Plugins依赖(推荐)
Log4j提供了log4j-plugins模块,包含了常用的核心插件(如FileAppender、PatternLayout等),添加该依赖后,Log4j会通过插件清单文件加载组件,无需依赖包扫描。
在你的pom.xml中添加以下依赖(版本与已有Log4j依赖保持一致,即2.20.0):
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-plugins</artifactId> <version>2.20.0</version> </dependency>
添加后重新构建项目,启动时警告即可消失。
方法二:显式声明所需插件
如果不想新增依赖,可以在log4j2.xml配置文件中,显式声明你实际用到的所有插件类,避免Log4j触发包扫描。
示例配置(根据你实际使用的插件调整):
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <!-- 显式声明用到的插件 --> <Plugins> <Plugin type="Appender" name="File" class="org.apache.logging.log4j.core.appender.FileAppender"/> <Plugin type="Layout" name="PatternLayout" class="org.apache.logging.log4j.core.layout.PatternLayout"/> <Plugin type="Logger" name="Root" class="org.apache.logging.log4j.core.config.LoggerConfig"/> </Plugins> <Appenders> <File name="FileAppender" fileName="logs/app.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </File> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="FileAppender"/> </Root> </Loggers> </Configuration>
额外检查
运行mvn dependency:tree命令检查依赖树,确保所有Log4j相关依赖(如log4j-api、log4j-core)版本均为2.20.0,避免版本冲突导致的异常。
内容的提问来源于stack exchange,提问作者jvatechs
相关产品推荐
相关产品推荐

