Log4j教程

Log4j 与 SLF4J

Log4j vs SLF4J

SLF4J(Simple Logging Façade for java) 是一个 API,旨在提供对许多日志框架的通用访问,log4j 是其中之一他们。
它基本上是一个抽象层。它不是日志记录实现。这意味着如果您正在编写一个库并且您使用 SLF4J,您可以将该库提供给其他人使用,他们可以选择与 SLF4J 一起使用的日志记录实现,例如 log4j 或 Java 日志记录 API。它用于防止应用程序依赖于不同的日志 API,就像它们使用依赖它们的库一样。
然而,我们详细说明了 Log4J 和 SLF4J 之间的区别,只需要一行回答。即,问题本身是错误的。 SLF4J 和 Log4J 不同,或者它们不是相似的组件。正如所指定的名称,SLF4J 是一个简单的 java 日志记录外观。它不是一个日志组件,甚至它也不做实际的日志记录。它只是一个底层日志组件的抽象层。
在Log4j的情况下,它是一个日志组件,它执行指示的日志记录。所以我们可以说 SLF4J 和 Log4J 在逻辑上是两个不同的东西。
Log4j vs SLF4J
现在,所有您必须选择,您需要在运行时使用哪个日志记录框架。为此,您需要包含两个 jar 文件:
SLF4J 绑定 jar 文件 所需的日志框架 jar 文件
例如,要在您的项目中使用 log4j,您需要包含以下 jar 文件:
slf4j-log4j12-1.7.12.jar log4j-1.2.17.jar
一旦你将两个 jar 文件放在你的应用程序类路径中,SLF4J 将自动检测它并开始使用 log4j 来处理基于你在 log4j 配置文件中提供的配置的日志语句。
例如,您可以在项目类文件中编写以下代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld
{
    public static void main(String[] args)
    {
        Logger logger = LoggerFactory.getLogger(HelloWorld.class);
        logger.info("Hello World");
    }
}

为什么 SLF4J 比 Log4J 更好?

总是很难在 SLF4J 和 Log4j 之间选择一个。如果你有选择,我会建议你;日志抽象总是比日志框架更可取。如果您使用日志抽象,特别是 SLF4J,我们可以在部署时迁移到我们需要的任何日志框架,而无需选择单一依赖。
以下是原因,选择 SLF4J 就足够了在 Log4j 上:
使用抽象总是更好。 SLF4J 是一个开源库或内部库,使其独立于任何特定的日志记录实现,这意味着无需为多个库管理多个日志记录配置。 SLF4J 提供基于占位符的日志记录,通过删除 isInforEnabled()、isDebugEnabled() 等检查来提高代码的可读性。 通过使用 SLF4J 的日志记录方法,我们推迟了构建日志消息(字符串)的成本,直到您需要它为止,这既节省 CPU 又节省内存。 由于 SLF4J 使用较少数量的临时字符串意味着垃圾收集器的工作更少,这意味着您的应用程序的吞吐量和性能更高。
所以本质上,SLF4J 并没有取代 log4j;他们一起工作。它从您的应用程序中删除了对 log4j 的依赖,并且可以在将来使用功能更强大的库轻松替换它。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4