如何覆盖LOGGER接口的默认实现

时间:2018-10-15 09:14:11

标签: java logging slf4j

我正在使用最终的Logger LOGGER = LoggerFactory.getLogger(clazz);获取org.slf4j的LOGGER对象。我在覆盖此类的任何默认实现方法时都遇到困难。

我正在尝试重写conrete类的非静态方法。可以说,类MyLogger {Logger LOGGER = LoggerFactory.getLogger(clazz); LOGGER.debug(“ Some message”);现在,debug方法是在LOGGER类中声明的非静态方法,已经为它提供了一些具体的实现。这里的问题是,当我尝试搜索引用时,我看到很多实现类。因此,为了覆盖调试方法,我应该怎么做

像这样更新原始类:

public class MyLogger implements Logger {

 private static final Logger LOGGER = LoggerFactory.getLogger(MyLogger.class);
 public static org.slf4j.Logger init(Class clazz) {
        final Logger loggerOut = LoggerFactory.getLogger(clazz);
        setContainerId();
        LOGGER.debug("Logger is initialized for [{}].", clazz.getName());
        return loggerOut;
    }


    public void debug(String msg, Object arg1)
    {
        LOGGER.debug("My message",arg1);
    }
}

仍然无法获得结果。请建议我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

静态方法不能被覆盖。如果您在文档

中看到here LoggerFactory的功能