跳至主要內容

Spring Boot的日志设计

Jin大约 2 分钟

Spring Boot的日志设计

1、SpringBoot 采用日志组合

  • SLF4J+Logback

SLF4J是门面,Logback是实现

2、SpringBoot 日志设计

由于Spring Boot要整合大量其他框架,这些框架底层可能采用了各种不同的日志实现, 因此Spring Boot需要将这些日志全部“路由”给SLF4J(把所有日志统一交给SLF4J来输出), 以后开发者就只需要设置SLF4J的日志即可。

因此还需要

  • log4j-to-slf4j:它负责将Log4j日志路由到SLF4J。
  • jul-to-slf4j:负责将JUL日志路由到SLF4J。

查看依赖

mvn dependency:tree -Dincludes=org.springframework.boot:

执行后的依赖树:

[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:3.3.0:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:3.3.0:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-starter-logging:jar:3.3.0:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:3.3.0:compile
[INFO] |  \- org.springframework.boot:spring-boot-starter-tomcat:jar:3.3.0:compile

image-20240531115551347
image-20240531115551347

说明:

  1. 当你项目用了Spring Boot之后,Spring boot会负责将所有第三方框架日志都路由给SLF4J, 开发者就只需要配置SLF4J日志,即可对所有的日志进行全盘控制。
  2. 将Spring Boot应用部署到服务器上,JUL生成的日志将不再路由到Spring Boot应用的日志。 ——由于应用服务器底层往往都使用JUL日志,由于应用服务器本身、及服务器上可能部署了其他应用的日志 这些日志当然与我们Spring Boot应用无关,所以Spring Boot默认不会将这些日志路由到SLF4J上。

Spring Boot 统一了Java领域的所有框架所可能用到的日志实现,并将这些日志全部“路由”给 SLF4J 来管理,因此开发者只要管理SLF4J日志,即可对项目中所有日志框架进行管理。

贡献者: Jin