Подтвердить что ты не робот

Как найти, к какой библиотеке относится slf4j?

Я использую slf4j для регистрации в моем приложении. Я получаю цель slf4j. Я хотел бы знать, как узнать, с какой библиотекой протоколирования slf4j в настоящее время связывается. У меня есть log4j в моих ссылках. Я предполагаю, что slf4j связал себя с log4j.

Что я хотел бы знать, есть ли способ явно подтвердить эту привязку?

4b9b3361

Ответ 1

Просто выполните то, что SLF4J делает для обнаружения привязки:

final StaticLoggerBinder binder = StaticLoggerBinder.getSingleton();

Теперь вы можете попытаться выяснить, какова фактическая реализация в моем случае:

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

Отпечатки:

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

Ответ 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.. что угодно.