Java 如何将扩展SLF4J与Logback一起使用

Java 如何将扩展SLF4J与Logback一起使用,java,logback,slf4j,Java,Logback,Slf4j,我们扩展了SLF4J的LoggerAPI,并创建了AppLogger接口。我们必须这样做,因为我不能在这里透露某些需要。现在,我们希望将此扩展记录器与LogBack框架一起使用。我找不到任何机制来让它工作。直接使用是抛出ClassCastException(这很明显,因为它需要一个名为Logger的类,并获取AppLogger) 通过编写桥接实现并提供自定义的StaticBinder类,我能够使这个扩展接口与log4j1.x和log4j2.x一起工作。对于LogBack,这个桥类(StaticB

我们扩展了SLF4J的
Logger
API,并创建了
AppLogger
接口。我们必须这样做,因为我不能在这里透露某些需要。现在,我们希望将此扩展记录器与LogBack框架一起使用。我找不到任何机制来让它工作。直接使用是抛出
ClassCastException
(这很明显,因为它需要一个名为
Logger
的类,并获取
AppLogger

通过编写桥接实现并提供自定义的
StaticBinder
类,我能够使这个扩展接口与
log4j1.x
log4j2.x
一起工作。对于LogBack,这个桥类(
StaticBinder
)是
logbackclassic
JAR文件的一部分,所以我不知道如何编写自己的binder和桥LogBack

AppLogger
界面如下所示:

public interface AppLogger extends org.slf4j.Logger {
    public void myOwnMethod(String message, Object... args);
}

感谢任何人提供任何想法。

1.7.15版之前的SLF4J绑定机制过去非常简单。在版本1.7.15之后,随着事件重播的引入,机制变得更加复杂,但核心绑定思想仍然简单。此外,对于那些不会被打扰的人来说,任何对事件重播的支持都可以安全地省略

有关slf4j绑定的示例,请参阅slf4j nop或slf4j简单模块中的代码


但是,从我收集的信息来看,您希望使用扩展的Logger API,在这种情况下,您应该查看slf4j ext模块中的
LoggerWrapper
XLogger
XLoggerFactory
类。您应该能够轻松地为您的
AppLogger
接口模拟相同的过程。

版本1.7.15之前的SLF4J绑定机制过去非常简单。在版本1.7.15之后,随着事件重播的引入,机制变得更加复杂,但核心绑定思想仍然简单。此外,对于那些不会被打扰的人来说,任何对事件重播的支持都可以安全地省略

有关slf4j绑定的示例,请参阅slf4j nop或slf4j简单模块中的代码


但是,从我收集的信息来看,您希望使用扩展的Logger API,在这种情况下,您应该查看slf4j ext模块中的
LoggerWrapper
XLogger
XLoggerFactory
类。您应该能够轻松地为您的
AppLogger
接口模拟相同的过程。

@Raedwald,我已经编辑了我的问题以添加扩展接口。我必须添加更多的特定于应用程序的日志记录方法。我也理解你延长LogBack的意思。我知道我必须提供一个等价于
ch.qos.logback.classic.Logger的实现,它将扩展我的
AppLogger
,但在这种情况下,我必须为
logback classic
JAR中的所有类提供代码。我想不出任何其他的主意。如果您有不同的想法,请提出建议。我很难想象您为什么需要扩展core Logger接口来完成一些无法通过标记、MDC或其他内置机制完成的事情。您最好不要修改Logger接口,而只提供自己的方法,所有类都可以静态导入。@Raedwald,我已经编辑了我的问题,添加了扩展接口。我必须添加更多的特定于应用程序的日志记录方法。我也理解你延长LogBack的意思。我知道我必须提供一个等价于
ch.qos.logback.classic.Logger的实现,它将扩展我的
AppLogger
,但在这种情况下,我必须为
logback classic
JAR中的所有类提供代码。我想不出任何其他的主意。如果您有不同的想法,请提出建议。我很难想象您为什么需要扩展core Logger接口来完成一些无法通过标记、MDC或其他内置机制完成的事情。最好不要修改Logger接口,而只是提供自己的方法,让所有类都静态导入。