# SLF4j 与 Log4j – 哪个更好？

> 原文： [https://howtodoinjava.com/log4j/slf4j-vs-log4j-which-one-is-better/](https://howtodoinjava.com/log4j/slf4j-vs-log4j-which-one-is-better/)

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

[**Java 简单日志记录外观（SLF4J）**](http://www.slf4j.org/)是一种 API，旨在提供对许多日志记录框架的通用访问；[**log4j**](https://logging.apache.org/log4j/2.x/) 是其中之一。 然后，在部署时（而不是在编写代码时）决定使用哪个。 **最佳实践是将 slf4j 用于您自己的日志语句**，然后为其选择适当的后端（通过配置使用 log4j 作为日志记录后端，还包括 log4j）。

例如，您可以在下面的代码中编写应用类文件：

```java
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 的依赖项，并在将来可以轻松地用功能更强大的库替换它**。

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

**祝您学习愉快！**