How do I set up commons-logging to use logback?

JavaLoggingLogbackApache Commons-Logging

Java 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionArtemView Question on Stackoverflow
Solution 1 - JavaSpencer KormosView Answer on Stackoverflow
Solution 2 - JavaSam YCView Answer on Stackoverflow
Solution 3 - JavaLu55View Answer on Stackoverflow
Solution 4 - JavaOlgun KayaView Answer on Stackoverflow