【发布时间】:2019-03-19 16:21:43
【问题描述】:
我正在使用最终的 Logger LOGGER = LoggerFactory.getLogger(clazz);获取 org.slf4j 的 LOGGER 对象。我在覆盖此类的任何默认实现方法时遇到困难。
我正在尝试覆盖 conrete 类的非静态方法。可以说,类 MyLogger { Logger LOGGER = LoggerFactory.getLogger(clazz); LOGGER.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);
}
}
仍然无法得到结果。请建议我在这里缺少什么?
【问题讨论】:
-
您好,欢迎来到 SO。请阅读tour 并阅读How to Ask 并相应地改进您的问题(即为什么要覆盖方法?究竟是什么方法?没有按预期工作的最佳方法是什么(显示代码)?你的错误是什么?得到?)。照原样,我们无法扣除您遇到的任何问题,因此无法实际帮助您。
-
... 还有一个小提示:更好地描述您想要实现的目标,然后列出您失败的尝试。这样,人们就可以就实际问题给出答案,而不是修复潜在的有缺陷的方法。 (参见“x-y-问题”)