我们使用 slf4j + logback,但是有一些第三方库使用 commons-logging。怎么设置才能让它们使用 logback?
我们使用 slf4j + logback,但是有一些第三方库使用 commons-logging。怎么设置才能让它们使用 logback?
答案是不要使用commons-logging.jar,因为SLF4J旨在比commons-logging更好地完成其工作。如@MahdeTo所指,您需要使用jcl-over-slf4j.jar。
请查看来自slf4j网站的文档,了解有关从commons-logging迁移的信息。.
我也遇到了这个问题,发现 jcl-over-slf4j.jar
确实可以解决问题。我不明白为什么 commons-logging
不能自动使用 logback
,因为 commons-logging
是日志接口,而 logback
是实现,它们应该自动集成,直到我找到 this:
Apache Commons Logging (JCL) 提供了一个 Log 接口,旨在既轻量又独立于其他日志工具包的抽象。它为中间件/工具开发人员提供了一个简单的日志抽象,允许用户(应用程序开发人员)插入特定的日志实现。
JCL 为其他日志工具提供了薄包装的 Log 实现,包括 Log4J、Avalon LogKit(Avalon Framework 的日志基础设施)、JDK 1.4 和 JDK 1.4 日志 API(JSR-47)的实现,用于 pre-1.4 系统。该接口与 Log4J 和 LogKit 相似。
显然,并不是所有的日志接口都可以很好地与日志实现集成。这意味着,如果你真的想使用logback
,那么现在你唯一的解决方案就是使用jcl-over-slf4j.jar
,因为JCL
只支持Log4J, Logkit, JDK 1.4
。
只需将jcl-over-slf4j
添加到项目的依赖项中(请检查当前版本:https://search.maven.org/search?q=g:org.slf4j%20AND%20a:jcl-over-slf4j&core=gav)。
对于那些想要使最终软件包大小更小的人; 检查您的项目的mvn dependency:tree
结果,如果存在任何依赖项commons-logging
,也要将其排除在外。由于jcl-over-slf4j.jar
包含了具有完全相同包结构的Log和LogFactory类,这些commons-logging jars 在你的最终软件包上将是多余的。