一、引言
对于一个成熟的接口测试框架,日志管理这个是必不可少的。在开发和调试阶段,日志可以帮助我们更快的定位问题;而在测试的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通常很多测试框架会通过收集日志信息来对接口测试状态进行实时监控预警。
二、前言
Spring Boot 在所有内部日志中使用Commons Logging
,但是默认配置也提供了对常用日志的支持,如:Java Util Logging
,Log4J
, Log4J2
和Logback
。每种 Logger 都可以通过配置使用控制台或者文件输出日志内容。
三、LogBack、Slf4j和Log4j之间的关系
Slf4j是The Simple Logging Facade for Java
的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API
和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作为应用层的Log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(Log4j/LogBack/JdkLog…)。
LogBack和Log4j都是开源日记工具库,LogBack 是 Log4j 的改良版本,比 Log4j 拥有更多的特性,同时也带来很大性能提升,同时天然支持SLF4J。
LogBack 官方建议配合 Slf4j 使用,这样可以灵活地替换底层日志框架。
TIPS:为了优化log4j,以及更大性能的提升,Apache基金会已经着手开发了log4j 2.0, 其中也借鉴和吸收了logback的一些先进特性。
四、默认日志Logback
默认情况下,Spring Boot 会用 Logback 来记录日志,并用 INFO 级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了。
从上图可以看到,日志输出内容元素具体如下:
- 时间日期:精确到毫秒
- 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
- Logger名:通常使用源代码的类名
- 分隔符:--- 标识实际日志的开始
- 进程 ID
- 线程名:方括号括起来(可能会截断控制台输出)
- 日志内容
五、配置详解
1、添加日志依赖
假如maven依赖中添加了spring-boot-starter-logging
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
复制代码
那么,我们的Spring Boot应用将自动使用 logback 作为应用日志框架,Spring Boot 启动的时候,由 org.springframework.boot.logging.Logging-Application-Listener
根据情况初始化并使用。
但是呢,实际开发中我们不需要直接添加该依赖,你会发现spring-boot-starter
其中包含了 spring-boot-starter-logging
,该依赖内容就是 Spring Boot 默认的日志框架 logback
2、配置文件
Spring Boot 官方推荐优先使用带有-spring
的文件名作为你的日志配置(如使用logback-sp