从Log4j1.2升级至Log4j2.19.0启动服务器时遇报错求助
Log4j 1.2.17升级到2.19.0启动错误解决
错误原因分析
你碰到的核心问题是Log4j 1.x和2.x的API完全不兼容:
- 旧的
org.apache.log4j.Appender是Log4j 1.x的接口,而新的org.apache.logging.log4j.core.appender.RollingFileAppender属于Log4j 2.x体系,两者没有继承关系,自然无法赋值。 - 配置文件还是Log4j 1.x的格式(比如
log4j.appender.xxx这类配置项),Log4j 2.x无法识别,导致找不到对应的appender实例。
解决步骤
彻底清理Log4j 1.x依赖
检查项目的依赖库(比如WEB-INF/lib),删除所有log4j 1.x相关的jar包(比如log4j-1.2.17.jar),避免类加载冲突。正确引入Log4j 2.x依赖
如果用Maven管理依赖,添加以下配置(根据项目需要调整):<dependencies> <!-- Log4j 2.x核心依赖 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.19.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.19.0</version> </dependency> <!-- 可选:如果项目代码中有大量Log4j 1.x的直接调用,用桥接包过渡 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>2.19.0</version> </dependency> </dependencies>非Maven项目的话,直接下载对应版本的jar包放到WEB-INF/lib下。
升级配置文件
Log4j 2.x不再支持1.x的log4j.properties或log4j.xml格式,需要换成log4j2.xml(推荐)或log4j2.properties。
举个简单的RollingFileAppender配置示例(log4j2.xml):<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <!-- 控制台输出 --> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <!-- 滚动文件输出 --> <RollingFile name="turbine" fileName="logs/turbine.log" filePattern="logs/turbine-%d{yyyy-MM-dd}-%i.log.gz"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> <Policies> <SizeBasedTriggeringPolicy size="100MB"/> </Policies> <DefaultRolloverStrategy max="10"/> </RollingFile> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="console"/> <AppenderRef ref="turbine"/> </Root> </Loggers> </Configuration>把原来的配置项按照Log4j 2.x的语法重新编写,确保appender的名称和代码中的引用一致。
检查代码中的API引用
如果代码里有直接importorg.apache.log4j.*的地方,要么改成Log4j 2.x的API(比如org.apache.logging.log4j.*),要么通过log4j-1.2-api桥接包兼容旧代码(但桥接包仅支持部分1.x的API,复杂场景可能需要修改代码)。
内容的提问来源于stack exchange,提问作者M. Rajesh Kumar Reddy
相关产品推荐
相关产品推荐

