Есть ли способ заставить slf4j использовать конкретного поставщика регистрации (logback в моем случае)? Как и в их документах:
Множественные привязки были найдены на пути к классу
API SLF4J предназначен для привязки к одной и только одной базовой структуре ведения журнала за раз. Если в пути класса присутствует более одного привязки, SLF4J выдаст предупреждение с указанием местоположения этих привязок. Если в пути класса доступны несколько привязок, выберите одно и только одно связывание, которое вы хотите использовать, и удалите другие привязки. Например, если у вас есть как slf4j- > simple-1.6.6.jar, так и slf4j-nop-1.6.6.jar в пути к классу, и вы хотите использовать привязку nop ( > no-operation), затем удалите slf4j- simple-1.6.6.jar из пути класса. Если невозможно удалить суперплоские привязки, SLF4J по-прежнему будет связываться с одной базой данных/реализацией. Начиная с версии 1.6.6, SLF4J назовет класс рамки/реализации, на который он фактически связан.
ПРИМЕЧАНИЕ Предупреждение, выданное SLF4J, - это только предупреждение.
В моем случае у меня есть log4j.jar
, slf4j-log4j12.jar
, log4j-over-slf4j.jar
и все банки журнала в пути к классам. Я знаю, что с ошибкой иметь slf4j-log4j12.jar
и log4j-over-slf4j.jar
вместе, но мой проект очень большой, и не всегда легко найти и исключить зависимость от maven. В этом случае slf4j даже не печатал никаких предупреждений, потому что мы используем только logback configs. Мне понадобился день, чтобы понять этот адский ад.
Все, что я хочу, это заставить slf4j использовать logback через JVM-аргумент, например, чтобы он мог печатать предупреждения, и я могу исключить банки в будущем.