Ric*_*ard 2 java logging log4j slf4j
我试图将所有不同的日志工具(log4j、slf4j、logback、jcl 等)以及它们都做了什么。
我知道 slf4j 是不同日志工具的外观,可以轻松地在任何日志工具之间切换。但是当我谈到 logback 时,我很困惑。我知道 logback 是 log4j 的继承者,并且从这篇文章中它使用了“本地实现”这个词;这到底是什么意思。根据我的理解,logback 与 slf4j 是一回事......所以它也是一个外观吗?我对 logback 是一个后端日志工具和一张与 slf4j 一样的面孔有不同的描述。
我尝试了一个小型测试项目来了解它是如何工作的。所以在我的 maven pom 中,我放了:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后在我输入的代码中:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Foo {
/** The Constant LOGGER. */
private static final Logger LOGGER = LoggerFactory.getLogger(Foo.class);
}
Run Code Online (Sandbox Code Playgroud)
那么这个实现是否意味着 slf4j 是 logback 的外观,而 logback 是与 log4j 和 jcl 相同的后端日志记录工具?
这意味着SLF4J's 接口中定义的所有方法都直接在Logback's 类中实现。没有额外的层来“翻译”SLF4J调用到实际的日志实现。
当您查看实现它的org.slf4j.Logger接口和ch.qos.logback.classic.Logger类时,可以很容易地看到这一点。它像手套一样合身。