61

我们使用 slf4j + logback,碰巧有一些使用 commons-logging 的第三方库。如何设置它以使用 logback?

4

4 回答 4

54

答案是不要使用 commons-logging.jar,因为 SLF4J 旨在做 commons-logging 所做的事情,但更好。正如@MahdeTo 所指,您需要使用jcl-over-slf4j.jar。

查看 slf4j 网站上关于从 commons-logging 迁移的文档。

于 2012-04-12T18:05:34.940 回答
17

我也遇到这个问题,发现jcl-over-slf4j.jar确实可以解决问题,我不明白为什么commons-logging不能logback自动使用,因为commons-logging是日志接口和logback实现,它们应该自动集成,直到我发现这个

Apache Commons Logging (JCL) 提供了一个 Log 接口,它既是轻量级的,又是其他日志工具包的独立抽象。它为中间件/工具开发人员提供了一个简单的日志抽象,允许用户(应用程序开发人员)插入特定的日志实现。

JCL 为其他日志记录工具提供瘦包装日志实现,包括 Log4J、Avalon LogKit(Avalon 框架的日志基础设施)、JDK 1.4,以及 JDK 1.4 日志 API (JSR-47) 的实现,用于 1.4 之前的系统。该接口紧密映射到 Log4J 和 LogKit。

显然不是所有的日志接口都可以很好地与日志实现集成,这意味着,如果你真的想使用logbackjcl-over-slf4j.jar现在是你唯一的解决方案,因为JCL只支持Log4J, Logkit, JDK 1.4.

于 2017-04-19T04:00:56.793 回答
4

只需添加到项目的依赖项(在https://search.maven.org/search?q=g:org.slf4j%20AND%20a:jcl-over-slf4j&core=gavjcl-over-slf4j检查当前版本)

于 2018-10-25T19:54:32.713 回答
0

对于那些想要保持最终包装尺寸更小的人;您的项目的结帐 mvn dependency:tree结果,如果commons-logging存在任何依赖关系,也将它们排除在外。由于jcl-over-slf4j.jar包含具有完全相同包结构的 Log 和 LogFactory 类,因此这些 commons-logging jar 在您的最终包中将是额外的。

于 2019-04-18T04:53:47.387 回答