我正在尝试了解所有不同的日志记录工具(log4j、slf4j、logback、jcl 等)以及它们的用途。
我知道 slf4j 是不同日志记录工具的一个外观,可以轻松地在任何日志记录工具之间切换。但当我谈到logback这个话题时,我感到很困惑。我了解 logback 是 log4j 的后继者,来自 this post它使用“本地实现”一词;这到底是什么意思?据我了解,logback 与 slf4j 是一样的……那么它也是一个门面吗?我收到了关于 logback 作为后端日志记录工具和与 slf4j 相同的面孔的混合描述。
我尝试了一个小型测试项目来了解它是如何工作的。所以在我的 Maven pom 中我输入:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
然后在我输入的代码中:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Foo {
/** The Constant LOGGER. */
private static final Logger LOGGER = LoggerFactory.getLogger(Foo.class);
}
那么这个实现是否意味着 slf4j 是 logback 的一个门面,而 logback 是一个与 log4j 和 jcl 相同的后端日志记录工具?
最佳答案
这意味着 SLF4J
接口(interface)中定义的所有方法都直接在 Logback
类中实现。没有额外的层可以将 SLF4J
调用“转换”为实际的日志记录实现。
当您查看 org.slf4j.Logger 接口(interface)和实现它的 ch.qos.logback.classic.Logger 类时,可以很容易地看出这一点。它像手套一样合身。
关于java - 了解 Logback 和 Slf4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797987/