SLF4j 与 Log4j – 哪个更好?

SLF4j 与 Log4j – 哪个更好?

原文: https://howtodoinjava.com/log4j/slf4j-vs-log4j-which-one-is-better/

我多次被问到这个问题,所以我想写下我的答案作为博客本身的这篇文章,以便其他人在需要时可以不时引用它。

Java 简单日志记录外观(SLF4J)是一种 API,旨在提供对许多日志记录框架的通用访问;log4j 是其中之一。 然后,在部署时(而不是在编写代码时)决定使用哪个。 最佳实践是将 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");
    }
}

现在,您只需选择运行时需要使用的日志记录框架即可。 为此,您将必须包含两个 jar 文件:

  1. SLF4j 绑定 jar 文件
  2. 所需的日志记录框架 jar 文件

例如,要在您的项目中使用 log4j,您将必须在给定的 jar 文件中包含以下内容:

  • slf4j-log4j12-1.7.12.jar
  • log4j-1.2.17.jar

将两个 jar 文件都放置在应用类路径中后,SLF4j 将自动检测到它,并开始使用 log4j 根据您在 log4j 配置文件中提供的配置来处理日志语句。

将来,如果您想用任何其他日志记录框架替换 log4j – 您要做的就是替换绑定和日志记录 jar 文件(以及配置文件)。 这简单。 无需更改实际的源代码文件。

因此,从本质上讲,SLF4J 不能替代 log4j,它们可以一起工作。 它从您的应用中删除了对 log4j 的依赖项,并在将来可以轻松地用功能更强大的库替换它

我希望以上讨论对将来的我们有所帮助。

祝您学习愉快!