我使用SLF4J在我的应用程序日志记录。 我得到SLF4J的目的。 我想知道如何找出记录库SLF4J正在结合。 我在引用的库的log4j。 我假设SLF4J有自己有义务log4j的。
我想知道的是,有没有什么办法,以明确确认这个绑定?
我使用SLF4J在我的应用程序日志记录。 我得到SLF4J的目的。 我想知道如何找出记录库SLF4J正在结合。 我在引用的库的log4j。 我假设SLF4J有自己有义务log4j的。
我想知道的是,有没有什么办法,以明确确认这个绑定?
只是做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
该StaticLoggerBinder
的getLoggerFactoryClassStr()
方法可能是你在找什么。
这是可能做到这一点使用的主要SLF4J公共API(即没有内部StaticLoggerBinder),例如,以检测是否有SLF4J到bpound log4j2:
if ("org.apache.logging.slf4j.Log4jLoggerFactory".equals(
org.slf4j.LoggerFactory.getILoggerFactory().getClass().getName()
)
{ ... }
简单。 把一个断点..说.. LOG.info(...)。 一旦调试器停在那里,步入..和中提琴..你会发现自己在实际的记录器的代码......说log4j的或的logback。无论如何。