如何设置commons-logging以使用logback?

问题描述 投票:50回答:4

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

java logging logback apache-commons-logging
4个回答
47
投票

答案是不使用commons-logging.jar,因为SLF4J的目的是做公共日志记录但做得更好。正如@MahdeTo所指,您需要使用jcl-over-slf4j.jar。

查看slf4j网站on migrating from commons-logging上的文档。


9
投票

我也遇到了这个问题,并发现jcl-over-slf4j.jar确实可以解决问题,我无法理解为什么commons-logging无法自动使用logback,因为commons-logging是日志接口而logback是实现,它们应该自动集成,直到我找到this

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

JCL为其他日志工具提供了精简包装日志实现,包括Log4J,Avalon LogKit(Avalon Framework的日志记录基础结构),JDK 1.4以及用于1.4之前系统的JDK 1.4日志API(JSR-47)的实现。该接口与Log4J和LogKit紧密相关。

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


2
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.