Log4j兼容性/桥接API类强制转换异常

时间:2016-11-11 18:21:41

标签: java logging log4j

我正在尝试通过1.x =>将一些遗留代码迁移到log4j 2.6。 2.x桥罐。

在旧代码中,我有一个扩展org.apache.log4j.Logger的类。将2.6核心/ api jar以及bridge api jar添加到我的类路径时,由于类强制转换异常,我有一个单元测试失败:

java.lang.ClassCastException: org.apache.log4j.Logger cannot be cast to com.example.MyLogger

和MyLogger的类签名是

package com.example;
import org.apache.log4j.Logger;
public class MyLogger extends Logger {
}

它只适用于log4j 1.2,并且旧类(org.apache.log4j.Logger)位于桥接jar中,并且由于MyLogger是一个Logger,你可以预期它仍然有用。

关于为什么这不起作用的任何想法?

1 个答案:

答案 0 :(得分:0)

这是在运行时发生的,因为代码正在操作不是MyLogger实例的Logger对象。我首先检查我是否只在代码中构建MyLogger实例。调试器在此处有所帮助,avoiding the use of printStackTrace也是如此。