The warning issued by SLF4J is just a warning. Even if multiple bindings are present, SLF4J selects one log structure / implementation and communicates with it. The SLF4J method selects the binding defined by the JVM and should be considered random for all practical purposes. Starting with version 1.6.6, SLF4J will name the framework / implementation class to which it is actually linked.
Embedded components, such as libraries or frameworks, should not declare dependency on any SLF4J binding, but depend only on slf4j-api. When a library declares a compile-time dependency on an SLF4J binding, it imposes that binding on the end user, thereby negating the purpose of SLF4J. When you encounter an embedded component declaring the compilation time to be dependent on any SLF4J binding, please take a moment to contact the authors of the specified component / library and ask them to fix their paths.
source share