为什么 spring-boot-starter-logging 需要依赖 log4-to-slf4j
Why does spring-boot-starter-logging require a dependency on log4-to-slf4j
我有一个使用 spring-boot-starter
的 Spring Boot 2.6.3 项目。当我 运行 Maven 中的 dependecy:tree
目标时,我看到 spring-boot-starter-logging
取决于 logback
和(间接地)log4j
。为什么 spring-boot-starter-logging
需要依赖 log4-to-slf4j
?
Spring Boot 绑定了所有主要的日志记录框架。通过单一配置,您可以集中通过 SLF4J、Log4j 2.x API 或 java.util.logging
.
发送的日志
因此 spring-boot-starter-logging
规定:
- SLF4J 的绑定(
logback-classic
),
- Log4j 的一个实现 2.x API (
log4j-to-slf4j
)。请注意,这不是标准的 Log4j 2.x 核心实现。
java.util.logging
(jul-to-slf4j
) 的处理程序。
请注意 spring-boot-starter-log4j2
做同样的事情并将上面的框架重定向到 Log4j 2.x 核心。
这张图片中最大的缺失是 Jakarta Commons Logging,它只能绑定到 java.util.logging
(因此不能直接绑定到 Logback 和 Log4j 2.x Core)。然而 spring-core
依赖于 spring-jcl
,它将 JCL 直接绑定到 SLF4J 或 Log4j 2.x API 并且可以完全替换原始 JCL。
第五个 API (Log4j 1.x) 在 Spring Boot 1.x.
中得到支持
我有一个使用 spring-boot-starter
的 Spring Boot 2.6.3 项目。当我 运行 Maven 中的 dependecy:tree
目标时,我看到 spring-boot-starter-logging
取决于 logback
和(间接地)log4j
。为什么 spring-boot-starter-logging
需要依赖 log4-to-slf4j
?
Spring Boot 绑定了所有主要的日志记录框架。通过单一配置,您可以集中通过 SLF4J、Log4j 2.x API 或 java.util.logging
.
因此 spring-boot-starter-logging
规定:
- SLF4J 的绑定(
logback-classic
), - Log4j 的一个实现 2.x API (
log4j-to-slf4j
)。请注意,这不是标准的 Log4j 2.x 核心实现。 java.util.logging
(jul-to-slf4j
) 的处理程序。
请注意 spring-boot-starter-log4j2
做同样的事情并将上面的框架重定向到 Log4j 2.x 核心。
这张图片中最大的缺失是 Jakarta Commons Logging,它只能绑定到 java.util.logging
(因此不能直接绑定到 Logback 和 Log4j 2.x Core)。然而 spring-core
依赖于 spring-jcl
,它将 JCL 直接绑定到 SLF4J 或 Log4j 2.x API 并且可以完全替换原始 JCL。
第五个 API (Log4j 1.x) 在 Spring Boot 1.x.
中得到支持