java - 了解 Logback 和 Slf4j

标签 java logging log4j slf4j

我正在尝试了解所有不同的日志记录工具(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/

相关文章:

java - 如何使用 Atlassian Bamboo 部署到 Wildfly Cluster

java - 如何保持文件打开并在后台线程中向其追加数据?

Java HttpClient 改变内容类型?

python - 打印所有 argparse 参数,包括默认值

java - log4j2 DailyRollingFileAppende 实际日志中基于 pid 的滚动日志文件

java,如何关闭在不同方法中使用的语句?

ruby-on-rails-3 - heroku rails logging 不显示输出?

java - 如何每 10 秒记录一次我的程序

java - 与库一起使用的不同记录器

java - 在 AWS Lambda 中记录数据的建议