How do I set up commons-logging to use logback?
JavaLoggingLogbackApache Commons-LoggingJava Problem Overview
We use slf4j + logback, and happened to have some third-party libraries which use commons-logging. How do I set it up to use logback?
Java Solutions
Solution 1 - Java
The answer is to not use commons-logging.jar, since SLF4J was designed to do what commons-logging does but better. As @MahdeTo refers to, you need to use jcl-over-slf4j.jar.
Check out the documentation from the slf4j website on migrating from commons-logging.
Solution 2 - Java
I come across this question too, and found out jcl-over-slf4j.jar
indeed can solve the problem, I couldn't understand that why commons-logging
couldn't use logback
automatically, since commons-logging
is log interface and logback
is implementation, they should integrate automatically, until I found this:
> The Apache Commons Logging (JCL) provides a Log interface that is > intended to be both light-weight and an independent abstraction of > other logging toolkits. It provides the middleware/tooling developer > with a simple logging abstraction, that allows the user (application > developer) to plug in a specific logging implementation. > > JCL provides thin-wrapper Log implementations for other logging tools, > including Log4J, Avalon LogKit (the Avalon Framework's logging > infrastructure), JDK 1.4, and an implementation of JDK 1.4 logging > APIs (JSR-47) for pre-1.4 systems. The interface maps closely to Log4J > and LogKit.
Obviously not all the log interface can integrate nicely with log implementation which mean, if you really want to use logback
, jcl-over-slf4j.jar
is your only solution now because JCL
only support Log4J, Logkit, JDK 1.4
.
Solution 3 - Java
Just add jcl-over-slf4j
to the dependencies of your project (check current version at https://search.maven.org/search?q=g:org.slf4j%20AND%20a:jcl-over-slf4j&core=gav)
Solution 4 - Java
for those all who wants to keep the final package size smaller; checkout
mvn dependency:tree
result of your project and if any dependency to commons-logging
exists, exclude them as well. Since the jcl-over-slf4j.jar
contains both Log and LogFactory classes with exact same package structure, these commons-logging jars will be extra on your final package.