工程中将log4j平滑升级到log4j2(坎坷路但不是太坎坷)
将升级步骤一级升级过程中遇到的问题 整理记录
如题,log4j1 如何平滑升级到log4j2呢?
原来使用
private static final org.apache.log4j.Logger logger1 = org.apache.log4j.Logger.getLogger(MainTest.class)方法获取到org.apache.log4j.Logger对象的 ,现在private static final org.apache.logging.log4j.Logger logger1 = org.apache.logging.log4j.LogManager.getLogger(MainTest.class) 方法获取到org.apache.logging.log4j.Logger
下面开始
1 将工程中的原有依赖删除
<!--log4j 日志文件 该maven时原有log4j依赖--> <!--<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency>-->
<!--slf4j 日志文件 该maven时原有slf4j依赖--> <!--<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.8</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.0</version> </dependency>-->
2 添加log4j2 相关依赖
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.jdkVersion>1.8</project.build.jdkVersion> <springversion>4.3.9.RELEASE</springversion> <!-- log4j 2.X版本之后的就是log4j2了 --> <log4j2-version>2.6.2</log4j2-version> </properties> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j2-version}</version> </dependency> <!-- 该包是 log4j 升级到 log4j2的必须包 使用该包 不需要修改以前的 Logger.getLogger()这种获取对象的方式 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-1.2-api --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>${log4j2-version}</version> </dependency> <!-- 该包是slf4j 升级到 log4j2的必须包 使用该包 其他依赖jar中依赖slf4j 不会报错 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>${log4j2-version}</version> </dependency>
3将web中工程中web.xml中日志文件修改
<context-param> <param-name>log4jConfigLocation</param-name> <!--<param-value>classpath:log4j.properties</param-value>--> <param-value>classpath:log4j2.xml</param-value> </context-param>
4可以启动工程
如果不报错恭喜你 已经成功了 如果启动异常 请往下看
注意 在升级过程中会遇到 依赖包版本问题
异常如下
或者另一种异常信息 其实都是版本冲突或者版本不匹配
都是slf4j 版本问题 在我的工程 中 就发现了 低版本的依赖包(是一个工程依赖包内部依赖的该jar包)
当工程中存在
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>3.0.3</version> </dependency>
这个jar包 就会有此问题 当然 也可能时其他的jar包问题 如何查看呢?
直说一种 亲测可以使用 其他的没有使用过 使用idea 工具
在弹出的输入中 输入 mvn dependency:tree 然后等待 将数据Copy出来就可以查看了
然后在使用低版本slf4j依赖的 maven jar包中使用exclusions 如下方式 将该包中的slf4j依赖去除
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>3.0.3</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> </exclusion> </exclusions> </dependency>然后就可以使用了 将工程跑起来吧 仅个人见解 如有问题 欢迎指出