我想重写 log4j.Logger
类的 error(Object message, Throwable t)
来更改一些内容。
但是,当我扩展 MYLogger 扩展 Logger 时,它仍然不会调用我的 error(..) 方法的实现,而是调用父类(super class)的方法。
这是代码
public class MYLogger extends Logger {
private static final String FQCN = MYLogger.class.getName();
protected MYLogger(String name) {
super(name);
// TODO Auto-generated constructor stub
}
public void error(Object message, Throwable t,final String codeKey, final String messageKey) {
System.out.println("codeKey "+codeKey+" messageKey"+messageKey);
String fmessage=codeKey+":"+messageKey;
if (this.repository.isDisabled(40000))
return;
if (Level.ERROR.isGreaterOrEqual(getEffectiveLevel()))
forcedLog(FQCN, Level.ERROR, fmessage, null);
}
}
以及我尝试调用 error(..) 实现的测试类
public class TestLogger {
protected static final MYLogger LOG = (MYLogger) MYLogger.getLogger(TestLogger.class);
public static void main(String[] args) {
LOG.error("Testing log error");
}
}
最佳答案
我曾经遇到过这样的问题,我已经这样解决了:
public class MYLogger {
private Logger logger;
public MYLogger(String name) throws IOException {
logger = Logger.getLogger(name);
}
public void error(String message){
if (logger != null)
logger.error(message);
}
}
关于java - log4j 自定义记录器方法没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35036559/