Как найти, к какой библиотеке относится slf4j?
Я использую slf4j для регистрации в моем приложении.
Я получаю цель slf4j. Я хотел бы знать, как узнать, с какой библиотекой протоколирования slf4j в настоящее время связывается. У меня есть log4j в моих ссылках. Я предполагаю, что slf4j связал себя с log4j.
Что я хотел бы знать, есть ли способ явно подтвердить эту привязку?
Ответы
Ответ 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
Ответ 2
StaticLoggerBinder
getLoggerFactoryClassStr()
метод вероятно, что вы ищете.
Ответ 3
Это можно сделать с помощью основного открытого API-интерфейса slf4j (т.е. без внутреннего StaticLoggerBinder), например, чтобы определить, имеет ли slf4j значение bpound для log4j2:
if ("org.apache.logging.slf4j.Log4jLoggerFactory".equals(
org.slf4j.LoggerFactory.getILoggerFactory().getClass().getName()
)
{ ... }
Ответ 4
Легко. Положите точку останова на.. скажем.. LOG.info(...). Как только отладчик остановится там, перейдите на.. и альта.. вы окажетесь в коде фактического регистратора... скажем, log4j или logback.. что угодно.