SpringBoot的日志使用
SpringBoot的日志选择
SpringBoot默认使用SLF4j和logback用作日志。为什么是两个,为什么是这两个?
日志框架的大致分类
日志框架分为日志的门面框架和具体的实现框架,为什么需要门面框架,是因为不同的系统对日志的需求可能不同,系统一可能使用日志框架一,系统二还需要实现日志功能,如果还用日志框架一,则需要适配系统二进行api的调整。
门面日志框架就为了解决这一问题。让调用框架的api统一,具体的实现可以随不同的系统进行调整。类似jdbc,操作接口需要进行统一。
所以SpringBoot的日志使用分别是用来日志门面框架SLF4j
和日志具体实现框架logback
作为日志服务。
使用日志
简易使用SLF4j
参考SLF4j官网中的hello world程序:
1 | // 导入slf4j的jar包 |
下图表示了使用slf4j和各个日志实现框架的匹配。绿色的是适配层,深蓝色的是实现框架。比如使用logback作为实现框架,则需要导入slf4j的jar包和logback的相关jar包。但是如果使用log4j作为实现框架,还需导入中间的适配层jar包(中间绿色的)。
在Springboot-logging-start中使用如下的jar包依赖:
每一个实现框架都有各自的配置文件,使用slf4j后,配置文件还是使用具体实现的配置文件。
SpringBoot中的SLF4j
- SpringBoot底层自动配置使用的是SLF4j和logback。
- SprintBoot使用中间包将其他日志框架转化为slf4j框架。
- 引入其他日志框架时,需要把这个日志的jar包排除掉。否则与slf4j的jar包相冲突,上一条就是原因。
在测试文件中测试SpringBoot的日志使用
1 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
日志级别有trace
, debug
,info
,warn
,error
五种日志级别。并且由低到高排序。指定日志级别,则系统会输出当前日志级别和更高的日志级别的日志。
1 | # 全局的日志记录级别 |