Czy mimo to musisz zmusić slf4j do korzystania z określonego dostawcy rejestrowania (logback w moim przypadku)? Ponieważ w ich docs: znalezionoWymuś użycie slf4j, aby użyć logback'u
Wiele Wiązania na ścieżce klasy
SLF4J API desinged związać z jednego i tylko jednego bazowego ramach rejestrowania w czasie. Jeśli na ścieżce klasy występuje więcej niż jedno powiązanie, SLF4J wyśle ostrzeżenie, wyświetlając lokalizację tych powiązań. Gdy na ścieżce klasy dostępnych jest wiele powiązań, wybierz jedno i tylko jedno wiązanie, którego chcesz użyć, i usuń pozostałe powiązania. Na przykład, jeśli posiadasz zarówno slf4j-> simple-1.6.6.jar i slf4j-nop-1.6.6.jar na ścieżce klasy i chcesz użyć wiązania nop (> no-operation), usuń slf4j- simple-1.6.6.jar ze ścieżki klasy. Jeśli nie jest możliwe usunięcie superflamowych powiązań, SLF4J nadal będzie wiązał się z jednym ramieniem/implementacją rejestrowania. Począwszy od wersji 1.6.6, SLF4J nazwie nazwę klasy/klasy implementacji, do której faktycznie jest związany.
UWAGA Ostrzeżenie wysyłane przez SLF4J jest właśnie tym, ostrzeżeniem.
W moim przypadku mam log4j.jar
, slf4j-log4j12.jar
, log4j-over-slf4j.jar
i wszystkie słoiki logback w ścieżce klasy. Wiem, że błędem jest mieć razem slf4j-log4j12.jar
i log4j-over-slf4j.jar
, ale mój projekt jest bardzo duży i nie zawsze łatwo jest znaleźć i wykluczyć zależność od mavenów. W tym przypadku slf4j nawet nie wydrukował żadnego ostrzeżenia, ponieważ używamy tylko konfiguracji logback. Zajęło mi dzień, aby zrozumieć piekło.
Wszystko, czego chcę, to zmuszanie slf4j do użycia funkcji logback za pomocą argumentu JVM, na przykład, aby drukować ostrzeżenia i mogę wykluczyć słoiki w przyszłości.
Szkoda mi – madhead