Wymusza używanie slf4j do logowania
Czy mimo to można zmusić slf4j do użycia konkretnego dostawcy logowania (w moim przypadku jest to logback)? Jak w ich dokumentach:
Na ścieżce klasy znaleziono wiele powiązań
Interfejs API SLF4J ma na celu powiązanie z jedną i tylko jedną podstawową strukturą rejestrowania naraz. Jeśli na ścieżce klasy występuje więcej niż jedno wiązanie, SLF4J wyśle ostrzeżenie, wymieniają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ń inne powiązania. Na przykład, jeśli masz zarówno slf4j-> simple-1.6.6.jar, jak 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 usunięcie powiązań superflous nie jest możliwe, SLF4J nadal będzie wiązał się z jedną strukturą / implementacją rejestrowania. Począwszy od wersji 1.6.6, SLF4J będzie nazywać klasę / klasę implementacji, do której jest faktycznie przypisany.
UWAGA Ostrzeżenie wysyłane przez SLF4J to właśnie ostrzeżenie.
W moim przypadku mamlog4j.jar
, slf4j-log4j12.jar
, log4j-over-slf4j.jar
i wszystkie słoiki z logbackiem w ścieżce klas. Wiem, że to błądslf4j-log4j12.jar
ilog4j-over-slf4j.jar
razem, ale mój projekt jest bardzo duży i nie zawsze łatwo jest znaleźć i wykluczyć zależność mavenów. W tym przypadku slf4j nawet nie wydrukował żadnego ostrzeżenia, ponieważ używamy tylko konfiguracji logback. Zajęło mi dzień, aby zrozumieć to piekło w słoiku.
Chcę tylko wymusić na slf4j użycie logbacku na przykład za pomocą argumentu JVM, aby mógł drukować ostrzeżenia, a ja mogę wykluczyć słoiki w przyszłości.