如何找到哪个库SLF4J有自己有义务?(How to find which library slf4

2019-06-24 06:18发布

我使用SLF4J在我的应用程序日志记录。 我得到SLF4J的目的。 我想知道如何找出记录库SLF4J正在结合。 我在引用的库的log4j。 我假设SLF4J有自己有义务log4j的。

我想知道的是,有没有什么办法,以明确确认这个绑定?

Answer 1:

只是做SLF4J确实发现了绑定:

final StaticLoggerBinder binder = StaticLoggerBinder.getSingleton();

现在,你可以尝试找出什么是实际执行的logback在我的情况:

System.out.println(binder.getLoggerFactory());
System.out.println(binder.getLoggerFactoryClassStr());

这将打印:

ch.qos.logback.classic.LoggerContext[default]
ch.qos.logback.classic.selector.DefaultContextSelector


Answer 2:

StaticLoggerBindergetLoggerFactoryClassStr()方法可能是你在找什么。



Answer 3:

这是可能做到这一点使用的主要SLF4J公共API(即没有内部StaticLoggerBinder),例如,以检测是否有SLF4J到bpound log4j2:

if ("org.apache.logging.slf4j.Log4jLoggerFactory".equals(
    org.slf4j.LoggerFactory.getILoggerFactory().getClass().getName()
) 
{ ... }


Answer 4:

简单。 把一个断点..说.. LOG.info(...)。 一旦调试器停在那里,步入..和中提琴..你会发现自己在实际的记录器的代码......说log4j的或的logback。无论如何。



文章来源: How to find which library slf4j has bound itself to?