一. 整合背景
请移步log4j架构的介绍文章: 《一个著名的日志系统是怎么设计出来的?》
每个日志框架系统都有期优劣之处, logback作为log4j 原作者的升级版本, 存在诸多优势:
- Logback同样是由Log4j的作者设计完成的,拥有更好的特性,用来取代Log4j的一个日志框架,是Slf4j的原生实现(Native implementations)
- 使用日志框架的最佳实践是选择一款日志门面+一款日志实现,这里选择Slf4j+Logback, Slf4j作者也是Logback的作者
- SpringBoot从1.4版本开始,内置的日志框架就是Logback
- 方便的配置日志输出至console, 并同时在磁盘上以文件形式留存,还可以按日志Level 来分别生产日志文件夹, 如: info/debug/error/warn,日志可以按照配置规则, 方面的进行按天/时/分钟不同粒度的归档操作.
logback在springboot maven继承树中的位置:
①. pom.xml 中parent
<parent>标签作用:
.
现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。
这时候就需要用到parent标签, 我们创建一个parent项目,打包类型为pom,parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要定义,parent标签中写上parent项目的pom坐标就可以引用到common.jar了。
`
同理, springboot项目构建时, 也用到了这一特性, 会从parent继承过来通用的配置.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>test-project</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>test-project</name>
<description>Demo project for Spring Boot</description>
②. 查看其上一层的依赖(按住ctrl + 鼠标点击artifactId), 如下:
由下面的artifactId中的名字(spring-boot-dependencies)可以看出, 这里包含的都是spring-boot项目所需的公共依赖, 不存放任何代码.
依赖文件名: spring-boot-dependencies-2.1.6.RELEASE.pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
<artifactId>spring-boot-starter-parent</artifactId>
<packaging>pom</packaging>
<name>Spring Boot Starter Parent</name>
<description>Parent pom providing dependency and plugin management for applications
built with Maven</description>
<url>https://projects.spring.io/spring-boot/#/spring-boot-starter-parent</url>
# 向下翻, 可以看到 spring-boot-starter-logging 这个依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
③. 继续查看(spring-boot-starter-logging) 其上一层的依赖(按住ctrl + 鼠标点击artifactId), 如下:
依赖文件名: spring-boot-starter-logging-2.1.6.RELEASE.pom
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.11.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.26</version>
<scope>compile</scope>
</dependency>
</dependencies>
可以清楚的看到, logback/ log4j-to-slf4j 门面转换器 / jul-to-slf4j 门面转换器, 都已包含在spring-boot的公共依赖中.
④. pom.xml 依赖调用链示意图如下:

二. 实现目标
SpringBoot项目在启动时, 如果未加额外的日志配置, 则默认日志会输出到控制台(Console)中.
以下实验希望实现如下目标:<

最低0.47元/天 解锁文章
7186

被折叠的 条评论
为什么被折叠?



