3

我正在寻找比 log4j 更喜欢 logback 的原因,并遇到了这一点:

logback-classic 原生讲 SLF4J

由于 logback-classic 中的 Logger 类本机实现了 SLF4J API,因此在调用具有 logback-classic 作为底层实现的 SLF4J 记录器时,您会产生零开销。此外,由于 logback-classic 强烈鼓励使用 SLF4J 作为其客户端 API,如果您需要切换到 log4j 或 jul,您可以通过将一个 jar 文件替换为另一个来实现。你不需要通过 SLF4J API 来修改你的代码日志。这可以大大减少切换日志框架所涉及的工作。

有人可以解释上述观点吗?

4

2 回答 2

3

如果您使用其他任何 SLF4J 实现,则需要一个额外的桥接器,它通过调用底层实现中的适当方法来实现 SLF4J 接口。

这将导致一些开销。

logback 直接实现接口,因此您不需要额外的网桥 => 没有开销。

话虽如此,在大多数情况下,开销很小,以至于对所选日志库本身的性能影响可以忽略不计,所以我不会太担心。

于 2012-10-15T06:23:44.987 回答
0

接受的答案是正确的。只是想将其添加为补充信息。

如果你往里看,logback-classic.jarch.qos.logback.classic.Logger会发现:

public final class Logger implements org.slf4j.Logger ...

这就是作者所说的:

... Loggerlogback-classic 中的类原生实现了 SLF4J API ...

于 2020-02-04T17:50:30.337 回答