java - log4j 自定义记录器方法没有被调用

标签 java log4j

我想重写 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/

相关文章:

java - 将 null 放在列表的末尾

java - 对集合进行排序的最佳方法?

java - 在 Java 中比较二维数组和一维数组

java - logj4 的备份文件每日滚动限制

java - 如何将 log4j conversionPattern 应用于特定包?

java - 从第三方框架中过滤掉 log4j 消息?

java - 为什么 zabbix 不显示从 java 代码接收到的值?

Java扫描器对象跳行?

java - 设置 log4j 配置文件时出错

java - 从一个附加器过滤记录器,但不从另一个附加器过滤记录器