log4j1迁移至log4j2启用兼容模式仍无法读取原有log4j.properties
log4j2的log4j1兼容特性可正常使用,大量项目通过该特性完成了平滑迁移,你的问题可按以下步骤排查解决:
- 升级log4j版本
你当前使用的2.13.0版本属于较早版本,v1兼容特性还处于实验性阶段,存在大量已知解析bug,无法正常识别绝大多数log4j1格式配置,建议将所有log4j相关依赖升级到2.17.2及以上稳定版本。 - 清理冲突依赖
排查项目依赖树,完全排除旧版log4j 1.x(groupId为log4j,artifactId为log4j)的依赖,避免和log4j-1.2-api产生功能冲突。 - 统一配置路径设置,避免冲突
你同时设置了log4j.configuration和log4j.configurationFile两个配置文件路径的系统属性,且两个路径不一致,JVM启动参数的优先级高于代码中设置的属性,会导致代码中的路径配置不生效。请仅保留其中一个配置,若配置文件放在项目resources目录下,无需写绝对路径,直接配置log4j.configuration=log4j.properties即可由类加载器自动从classpath读取。 - 保证兼容属性生效时机
log4j1.compatibility=true属性必须在所有Log4j相关类加载前设置完成,代码中设置容易出现初始化顺序问题,建议直接通过JVM启动参数设置该属性。 - 检查配置文件格式
确认你的log4j.properties为标准log4j1格式,必须包含log4j.rootLogger根日志配置,示例合法配置参考:
# 根日志配置 log4j.rootLogger=INFO, console, file # 控制台输出配置 log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # 文件输出配置 log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=./logs/app.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
内容的提问来源于stack exchange,提问作者Mary1
相关产品推荐
相关产品推荐

