当前位置: 首页 > 知识库问答 >
问题:

了解Logback和Slf4j

陈文景
2023-03-14

我正试图把我的头围绕在所有不同的日志记录工具(log4j、slf4j、logback、jcl等)和它们都做的事情上。

我知道slf4j是不同日志记录工具的一个门面,它使任何日志记录工具之间的切换变得很容易。但到了日志的话题,我就一头雾水了。我知道logback是log4j的后继者,在这篇文章中,它使用了“natively implements”这个词;那到底是什么意思。从我的理解是,日志与SLF4J是一样的东西...所以它也是一个门面吗?我对logback是一个后端日志记录工具和一个与SLF4J相同的face有不同的描述。

我尝试了一个小型测试项目来了解它是如何工作的。所以在我的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相同的后端日志记录工具?

共有1个答案

呼延鹏云
2023-03-14

这意味着slf4j接口中定义的所有方法都直接在logback的类中实现。没有额外的层来将slf4j调用“转换”到实际的日志记录实现。

当您查看org.slf4j.logger接口和实现它的ch.qos.logback.classic.logger类时,可以很容易地看到这一点。就像手套一样合身。

 类似资料:
  • 我有一个SBT/Scala项目,该项目包含其依赖项“ch.qos.logback”%“logback-classic”%“1.0.13”,并包含一个logback.xml文件,其内容如下: 当我运行该程序时,得到的输出如下: ... 我启用了logback配置调试,这样您就可以看到logback声称将该类的loglevel设置为ERROR。但仍然记录了这些消息。

  • 我正在尝试使用Wildfire 9的Logback。为此,我在WEB-INF文件夹中添加了一个jboss-deployment-structure.xml文件,其中包含以下内容(我还排除了Hibernate,以确保不拉出jboss-logging): 它工作得很好,只是我在每个日志之间有空行: 和:

  • 问题内容: 我想使用API使用XPATH在父节点内定位一个节点。我以为这会让我回到父母那边。但是,它将返回我在整个DOM树中找到的第一个。我使用了错误的XPATH吗? 我也曾尝试使用XPATH,但这确实会返回任何东西。 谢谢。 更新: 给定下面的HTML,我想为子标题和子日期定义一个定位器,并使用WebElement.findElement()API对其进行定位,而不管父级是“ // a / li

  • 问题内容: 我对新功能和有一些疑问。 对于前者,从文档中: 返回性能计数器的值(以小数秒为单位),即 具有最高可用分辨率的时钟, 可测量较短的持续时间。它确实包括整个系统的睡眠时间。返回值的参考点是不确定的,因此仅连续调用的结果之间的差有效。 所有系统的“最高分辨率”是否相同?还是总是稍微依赖于例如我们使用的是Linux还是Windows? 问题来自这样一个事实:阅读文档说明:“并非所有系统都提供

  • 我需要控制日志框架的最大磁盘空间量。 例如,在log4j中,如果有如下所示的追加器,我可以很容易地估计需要多少磁盘空间: 对于maxFileSize和maxBackupIndex,我知道最多需要10x100KB。 我注意到DailyRollingFileAppender,但它不支持maxFileSize。 除了RollingFileAppender之外,是否还有其他fileappender可以实现

  • 我正在尝试使用groovy配置文件进行GraalVM编译的应用程序使用的logback。 当运行它并正常编译它时,一切都很好,但当我试图针对Graal进行编译时,我面临着一些我无法理解如何解决的问题。 因此,在没有任何特定配置传递给Graal的情况下,我在编译过程中遇到以下错误: 我尝试了非常懒惰的方法,通过这样做来允许在构建期间初始化类: 这只会导致其他各种与日志存储相关的类需要这个选项,所以我