我有点困惑这三个日志记录库。看起来它们可以在Java日志记录中做类似的事情...
我有点困惑这三个日志记录库。看起来它们可以在Java日志记录中做类似的事情...
请查看它们的主页:
SLF4J - 简单日志门面(SLF4J)是一个简单的门面或抽象1,它为各种记录框架(例如 java.util.logging、logback、log4j)提供服务,允许最终用户在部署时插入所需的记录框架。
1) 它本身不是一个记录库,而是到许多记录库之一的通用接口。
Log4j 1.2 - 欢迎使用 Apache log4j,这是一个Java的记录库。
Logback - Logback旨在成为流行的log4j项目的继任者,接手log4j的位置。
Log4j 2 - Apache Log4j 2是Log4j的升级版,相对于前任Log4j 1.x,在许多方面进行了显着改进,并且提供了Logback中可用的许多改进,同时修复了Logback架构中一些固有的问题。
至少,这就是它们各自所说的。
详细解释了它们之间的区别。
引用自该文章:
Slf4j
简单日志门面(Simple Logging Facade for Java)作为一个简单的外观或抽象,为各种日志框架提供服务,允许最终用户在部署时插入所需的日志框架。
log4j2
Log4j、Logback和java.util.Logger是实际编写日志的日志库,并具有各自的优缺点。行业标准是Log4j2和Logback。
我建议您阅读这篇博客。它提供了所有关于如何使用适配器来同时使用两者的细节。
你的问题并不容易,只覆盖了Java生态系统中令人困惑的日志记录的一些主要元素。我不太了解这个生态系统,无法完全描述它,但描述当前情况以及如何形成它肯定需要数天/数周的工作才能编写出类似书籍的内容。
以下是一个非常简短,肯定过于简单化的答案,重点关注您提到的元素。
Log4j在2001年作为灵活的日志记录库出现。
Logback是作为Log4j的更强大替代品从2006年到2011年开发的。在2005年至2006年间,Simple Logging Facade for Java (SLF4J)被开发为优秀的替代方案来替代[Apache/Jakarta] Commons Logging (JCL)。Logback和SLF4J是相互补充的(可以一起使用或分别使用)。
可能是因为Logback和SLF4J在某种程度上是商业化的,所以Apache基金会在2014年发布了Log4j的重大升级。 Log4j 2在某种程度上类似于Logback+SLF4J,它提供了一个门面API(log4j-api,类似于SLF4J)以及一个实现(log4j-core,类似于Logback)。
如果以上内容似乎与其他来源相矛盾,那可能是因为Log4j版本1非常不同且仍在使用中,因此描述“Log4j”的来源实际上仍然可能描述Log4j 1。
log4j-api
中)和到所有主要日志框架(即Logback、java.util.logging
和JBoss LogManager)的绑定。出于明显的原因,它仅缺少与Log4j 1.x的绑定。 - Piotr P. Karwasz