📅  最后修改于: 2021-01-06 09:14:40             🧑  作者: Mango
SLF4J(用于Java的简单日志记录外观)是一种API,旨在提供对许多日志记录框架的通用访问,其中log4j是其中之一。
它基本上是一个抽象层。它不是日志记录实现。这意味着,如果您正在编写库并且使用SLF4J,则可以将该库提供给其他人使用,他们可以选择将哪种日志记录实现与SLF4J一起使用,例如log4j或Java日志记录API。它用于防止应用程序依赖于不同的日志记录API,就像它们使用依赖于它们的库一样。
但是,我们详细介绍了Log4J和SLF4J之间的区别,该区别仅应获得一个行答案。即,问题本身是错误的。 SLF4J和Log4J不同,或者它们不是相似的组件。就像指定的名称一样,SLF4J是Java的简单日志记录外观。它不是日志记录组件,甚至也不执行实际的日志记录。它只是底层日志记录组件的抽象层。
在Log4j的情况下,它是一个日志记录组件,并且按照指示执行日志记录。因此,可以说SLF4J和Log4J在逻辑上是两件事。
现在,您只需选择运行时需要使用的日志记录框架即可。为此,您将需要包括两个jar文件:
例如,要在您的项目中使用log4j,您将需要包含以下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,则可以迁移到部署时所需的任何日志记录框架,而无需选择单一依赖项。
以下是原因,足以选择SLF4J而不是Log4j:
因此,从本质上讲,SLF4J不会替代log4j。他们俩一起工作。它从您的应用程序中删除了对log4j的依赖,并使得将来使用功能更强大的库轻松替换它。