我过去只合作log4j
过。现在我正在寻找一个新项目并注意到它使用slf4j 1.7.2
. 我知道它只是一个 API 规范,它为符合它的各种实现提供简化的接口(AKA 外观),例如java.util.logging、log4j 和 logback。但是,我注意到commons-logging
API 网站的列表中没有提到它,但是,它的 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/LogFactory
公共资源是否不在类路径中,所以我很困惑。
澄清将不胜感激。