我有一个使用spring-boot-starter的Sping Boot 2.6.3项目。当我在maven中运行dependecy:tree目标时,我看到spring-boot-starter-logging依赖于logback和(间接地)log4j。为什么spring-boot-starter-logging需要依赖于log4-to-slf4j?
spring-boot-starter
dependecy:tree
spring-boot-starter-logging
logback
log4j
log4-to-slf4j
e4eetjau1#
Sping Boot 绑定了所有主要的日志框架。通过一个配置,你可以集中通过SLF4J,Log4j 2.x API或java.util.logging发送的日志。因此,spring-boot-starter-logging提供:
java.util.logging
logback-classic
log4j-to-slf4j
jul-to-slf4j
请注意,spring-boot-starter-log4j2做了同样的事情,并将上面的框架重定向到Log4j 2.x Core。这张图中最大的缺陷是Jakarta Commons Logging,它只能绑定到java.util.logging(因此不能直接绑定到Logback或Log4j 2.x Core),但是spring-core依赖于spring-jcl,spring-jcl将JCL直接绑定到SLF4J或Log4j 2.x API,并且可以完全替换原来的JCL。第五个API(Log4j 1.x)在Sping Boot 1.x中得到支持。
spring-boot-starter-log4j2
spring-core
spring-jcl
1条答案
按热度按时间e4eetjau1#
Sping Boot 绑定了所有主要的日志框架。通过一个配置,你可以集中通过SLF4J,Log4j 2.x API或
java.util.logging
发送的日志。因此,
spring-boot-starter-logging
提供:logback-classic
)的绑定,log4j-to-slf4j
)的实作。请注意,这不是标准的Log4j 2.x核心实作。java.util.logging
(jul-to-slf4j
)的处理程序。请注意,
spring-boot-starter-log4j2
做了同样的事情,并将上面的框架重定向到Log4j 2.x Core。这张图中最大的缺陷是Jakarta Commons Logging,它只能绑定到
java.util.logging
(因此不能直接绑定到Logback或Log4j 2.x Core),但是spring-core
依赖于spring-jcl
,spring-jcl
将JCL直接绑定到SLF4J或Log4j 2.x API,并且可以完全替换原来的JCL。第五个API(Log4j 1.x)在Sping Boot 1.x中得到支持。