我想覆盖log4j.Logger
类的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);
}
}
来改变一些事情。
但是当我扩展MYLogger扩展Logger时,它仍然没有调用我的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");
}
}
从我试图调用我的错误实现的测试类(..)
{{1}}
答案 0 :(得分:0)
我曾经遇到过这样的问题而且我已经这样修好了:
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);
}
}