我们扩展了 SLF4J 的 Logger
API 并创建 AppLogger
界面。我们必须这样做是为了满足某些需要,但我无法在此透露。现在,我们希望将这个扩展记录器与 LogBack 框架一起使用。我无法找到任何让它发挥作用的机制。直接使用就是抛出ClassCastException
(这很明显,因为它期望一个名称为 Logger
的类并获得 AppLogger
)。
我能够使这个扩展接口(interface)与 Log4J 1.x
一起使用和Log4J 2.x
通过编写桥实现并提供自定义 StaticBinder
类。对于 LogBack,此桥接类 ( StaticBinder
) 是 logback-classic
的一部分JAR 文件,所以我不确定如何编写自己的 Binder 和桥接 LogBack。
AppLogger
界面如下:
public interface AppLogger extends org.slf4j.Logger {
public void myOwnMethod(String message, Object... args);
}
感谢任何人提供任何想法。
最佳答案
直到版本 1.7.15 SLF4J 绑定(bind)机制曾经非常非常简单。在 1.7.15 版本之后,随着事件重播的引入,机制变得稍微复杂一些,但核心绑定(bind)思想仍然很简单。此外,对于那些不想被打扰的人来说,可以安全地忽略对事件重播的任何支持。
有关 slf4j 绑定(bind)的示例,请参阅 slf4j-nop 或 slf4j-simple 模块中的代码。
但是,根据我的收集,您希望使用扩展的 Logger API,在这种情况下您应该查看 LoggerWrapper
、XLogger
和 XLoggerFactory
slf4j-ext 模块中的类。您应该能够轻松地为您的 AppLogger
界面模拟相同的过程。
关于java - 如何将扩展 SLF4J 与 Logback 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784039/