log4j自定义记录器方法未被调用

时间:2016-01-27 11:49:07

标签: java log4j

我想覆盖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}}

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);
    }
}