У нас есть приложение Java Spring Boot, и мы хотим использовать Log4J2.
Он настроен как проект maven, поэтому в нашем файле pom.xml есть следующая зависимость.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
Поскольку мы импортируем несколько стартовых пакетов с подпружиненной загрузкой, которые связывают logback в качестве реализации ведения журнала по умолчанию, мы используем следующие шаблоны исключения для этих зависимостей, чтобы гарантировать, что Log4J2 выбран в качестве интерфейса ведения журнала по умолчанию через Slf4J.
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
Мой вопрос заключается в том, что происходит в случае, если у нас есть другая сторонняя зависимость, которая использует logback внутренне, как свою стратегию ведения журнала по умолчанию.
Мы регистрируемся через SLF4J, который затем направляет вывод журнала в Log4J2 через зависимость log4j-slf4j-impl, которая связана с зависимостью spring-boot-starter-log4j2.
Мне не удалось найти артефакты maven мостов / адаптеров, и у нас не может быть обоих JAR-файлов в приложении, в противном случае по умолчанию пружина будет возвращаться из системы. Я прочитал в logbacks website , что он изначально реализует SLF4J. Означает ли это, что даже если третья сторона зависит от Logback, она все равно будет работать, потому что у нас SLF4J? Любая ясность была бы велика, поскольку я немного запутался.