为什么 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 规定:

请注意 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.

中得到支持