Исключение зависимости Logback от spring-boot-starter-web останавливает правильную инициализацию системы log4j - PullRequest
0 голосов
/ 18 января 2020

Ранее у меня были проблемы с несколькими привязками для приложения Spring, я узнал, что исправление должно было исключить компонент зависимости spring-boot-starter-web. У меня сейчас проблема в том, что log4j хочет быть инициализированным, но зависимость logback-classi c.

вот ошибка, которая у меня была изначально:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]

я могу ' t исключить зависимость slf4-log4j12, поскольку этот модуль необходим для запуска и не может исключить зависимость logback, поскольку он должен быть инициализирован при запуске приложения Spring.

вот проблемы, которые я получаю при исключении logback:

log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

вот ошибка, которую я получаю, когда исключаю slf4j-log4j:

Exception in thread "main" java.lang.AbstractMethodError: org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class;)Z

1 Ответ

2 голосов
/ 18 января 2020

Почему вы думаете, что logback является зависимостью?

Logback напрямую реализует slf4j, вы используете logback через API sl4j, чтобы ваш код никогда не зависел от logback, но он может зависеть от slf4j.

Проблема, которую вы здесь изложили:

log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Если ваш проект не имеет конфигурации, заданной для log4j.

Библиотека slf4j-log4j12-1.6.1.jar является привязкой sl4j для log4j. Это означает, что любое ведение журнала кода с использованием slf4j будет направлено на log4j.

Исключение входа в систему является правильным подходом. Все, что вам нужно после исключения logback, - это конфигурация для log4j.

Пожалуйста, обратитесь к документации log4j о том, как указать конфигурацию. Если вы считаете, что проект имеет существующую конфигурацию, найдите файл log4j.properties или log4j. xml. Убедитесь, что они на пути к классу. Здесь был задан вопрос с похожей проблемой: Должен ли log4.properties находиться на пути к классам?

...