解释“经典的logback语言本身就是SLF4J”

问题描述 投票:3回答:2

我在看reasons to prefer logback over log4j并遇到了这一点:

logback-classic本地讲SLF4J

由于logback-classic中的Logger类实现了SLF4J API在本地使用以下方法调用SLF4J记录器会产生零开销logback-classic作为基础实现。而且,由于logback-classic强烈鼓励使用SLF4J作为其客户端API,如果您需要切换到log4j或j.u.l.,可以通过用另一个替换一个jar文件。您无需触摸通过SLF4J API记录代码。这样可以大大减少工作量涉及切换日志记录框架。

有人可以解释以上几点吗?

java logging log4j slf4j logback
2个回答
3
投票

如果您使用其他任何SLF4J实现,则需要一个附加的桥,该桥通过在基础实现中调用适当的方法来实现SLF4J接口。

这将导致一些开销。

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

已经说过,在大多数情况下,开销是如此之小,以至于所选日志库本身的性能影响可忽略不计,因此我不必为此担心太多。


0
投票

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

如果您在logback-classic.jarch.qos.logback.classic.Logger中查看,则会发现:

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

字面上是作者所说的:

... logback-classic中的Logger类本地实现SLF4J API ...

© www.soinside.com 2019 - 2024. All rights reserved.