java - 如何将扩展 SLF4J 与 Logback 结合使用

标签 java logback slf4j

我们扩展了 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,在这种情况下您应该查看 LoggerWrapperXLoggerXLoggerFactory slf4j-ext 模块中的类。您应该能够轻松地为您的 AppLogger 界面模拟相同的过程。

关于java - 如何将扩展 SLF4J 与 Logback 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784039/

相关文章:

java - 为java编译设置slf4j的类路径

java - Logback 类 CircularityError

java - 文档监听器检查我的文本字段是否为空

tomcat - 解决方法 LogbackValve 缺少异步支持

java - 如何解决 SSL 握手异常

java - 带有 Logback 的 Spring Boot 应用程序不会作为 Systemd 服务登录到指定位置

java - 将 Tomcat 日志发送到 Logstash

maven - 如何将 JSR-269 处理器的依赖项传递给 maven-compiler-plugin

java protocol buffers - 构造带有扩展字段的子消息

java - 如何将数组中的项目添加到 SortedSet 中?