繁体   English   中英

slf4j是否默认使用commons-logging实现?

[英]Does slf4j use commons-logging implementation by default?

我过去只使用过log4j 现在,我正在寻找一个新项目,并注意到它使用了slf4j 1.7.2 我了解这只是一个API规范,它为符合该规范的各种实现(例如java.util.logging,log4j和logback )提供了简化的接口(AKA门面)。 但是,我注意到API网站上的列表中未提及commons-logging ,但是它的jar位于该应用程序的类路径中。 当我从类路径中删除它以检查它是否是使用的实现时,我确认它确实是:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

commons-logging确实是slf4j的默认实现吗? 因为他们的文档说:

如果在类路径上未找到绑定,则SLF4J将默认为无操作实现。

在上面的链接页面上。 即使我在类路径中有slf4j-nop-1.7.2.jar ,我猜上面提到的默认实现是,但如果org/apache/commons/logging/LogFactoryorg/apache/commons/logging/LogFactory ,我仍然会遇到异常不在类路径中,所以我很困惑。

一个澄清将不胜感激。

您需要结合jar和类路径上的日志记录实现(在这种情况下为JCL)。

在部署时与日志框架绑定

commons-logging不是默认的,但是如果您的类路径上有slf4j-jcl-1.7.2.jar,它将尝试使用它。 因此,如果因此从路径中删除JCL,它将抱怨找不到该类。

slf4j-nop-1.7.2.jar是无操作的“ SLF4J绑定” jar,本身不是实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM