Мы используем slf4j + logback, и у нас были сторонние библиотеки, которые используют commons-logging. Как мне настроить использование logback?
Как настроить использование общего журнала для входа в систему?
Ответ 1
Ответ заключается в том, чтобы не использовать commons-logging.jar, так как SLF4J был предназначен для того, чтобы делать то, что позволяет вести учет, но лучше. Как указывает @MahdeTo, вам нужно использовать jcl-over-slf4j.jar.
Ознакомьтесь с документацией на веб-сайте slf4j при переходе с ведения общедоступных записей.
Ответ 2
Я тоже сталкивался с этим вопросом, и обнаружил, что jcl-over-slf4j.jar
действительно может решить эту проблему. Я не мог понять, почему commons-logging
logback
не logback
автоматически использовать logback
, поскольку commons-logging
- это интерфейс журнала, а logback
- реализации, они должны интегрироваться автоматически, пока я не нашел это:
Apache Commons Logging (JCL) предоставляет интерфейс Log, который должен быть как легковесным, так и независимым абстракцией других инструментариев ведения журналов. Он предоставляет разработчику промежуточного программного обеспечения/инструментария простую абстракцию регистрации, которая позволяет пользователю (разработчику приложения) подключить конкретную реализацию регистрации.
JCL предоставляет реализации Log с тонкой оболочкой для других инструментов ведения журналов, включая Log4J, Avalon LogKit (инфраструктура ведения журналов Avalon Framework), JDK 1.4 и реализацию API-интерфейсов ведения журналов JDK 1.4 (JSR-47) для систем до версии 1.4. Интерфейс тесно связан с Log4J и LogKit.
Очевидно, что не все интерфейсы журналов могут хорошо интегрироваться с реализацией журналов, что означает, что, если вы действительно хотите использовать logback
, jcl-over-slf4j.jar
является вашим единственным решением, поскольку JCL
поддерживает только Log4J, Logkit, JDK 1.4
.
Ответ 3
Просто добавьте jcl-over-slf4j
в зависимости вашего проекта (проверьте текущую версию по адресу https://search.maven.org/search?q=g:org.slf4j%20AND%20a:jcl-over-slf4j&core=gav)
Ответ 4
для тех, кто хочет сохранить окончательный размер упаковки; checkout mvn dependency:tree
результат вашего проекта и, если существует какая-либо зависимость от commons-logging
, исключите их. Поскольку jcl-over-slf4j.jar
содержит классы Log и LogFactory с точно такой же структурой пакета, эти jcl-over-slf4j.jar
регистрации общих файлов будут дополнительными в вашем конечном пакете.