我们使用 slf4j + logback,碰巧有一些使用 commons-logging 的第三方库。如何设置它以使用 logback?
4 回答
答案是不要使用 commons-logging.jar,因为 SLF4J 旨在做 commons-logging 所做的事情,但更好。正如@MahdeTo 所指,您需要使用jcl-over-slf4j.jar。
查看 slf4j 网站上关于从 commons-logging 迁移的文档。
我也遇到这个问题,发现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。
显然不是所有的日志接口都可以很好地与日志实现集成,这意味着,如果你真的想使用logback
,jcl-over-slf4j.jar
现在是你唯一的解决方案,因为JCL
只支持Log4J, Logkit, JDK 1.4
.
只需添加到项目的依赖项(在https://search.maven.org/search?q=g:org.slf4j%20AND%20a:jcl-over-slf4j&core=gavjcl-over-slf4j
检查当前版本)
对于那些想要保持最终包装尺寸更小的人;您的项目的结帐
mvn dependency:tree
结果,如果commons-logging
存在任何依赖关系,也将它们排除在外。由于jcl-over-slf4j.jar
包含具有完全相同包结构的 Log 和 LogFactory 类,因此这些 commons-logging jar 在您的最终包中将是额外的。