1.日志是什么?
日志:说明系统实时运行状态的信息。
比如:System.out.println()语句就是一种最低级的日志。
2.什么是日志门面和日志实现?
日志门面:是日志实现的抽象层。
日志实现:具体的日志功能的实现。
为什么不直接使用日志实现,而是又弄了一个叫日志门面的东西?
因为日志实现,可能会有一些代码的优化和改动,避免影响用户在项目中的使用,使用日志门面这些统一的接口,假设在实现层代码做了更改,用户在项目中使用日志而调用的接口等等都是不会受影响的。
3.常见的日志框架有哪些?
日志门面(抽象层) | 日志实现 |
JCL SLF4j Jboss-logging | JUL log4j log4j2 logback |
在实际使用中,是选择一个抽象层的日志门面搭配一个底层日志实现来使用的。
SpringBoot中默认选择的搭配是:slf4j+logback
下面分别了解一下以上提到的各种门面和实现。
JCL:最后一次版本更新停在了2014年,后来没有继续维护更新,一般不考虑选用。
slf4j:这里提一下日志实现里面的log4j和logback,这两个实现和门面slf4j都是同一个人写的,他先写了log4j后,觉得性能可以再做优化,又写了logback,为了有更加适配的门面,自己又为log4j和logback量身打造了门面slf4j。所以这三者里面最优的搭配当然是slf4j+logback。
JUL:是java.util.logging包下提供的日志实现。
log4j2:在log4j问世之后,apache公司发现了日志市场,自家也开发了一款叫log4j2的产品。
4.学后提问
应该能想明白的几点:
1.日志是用来干什么的?
2.日志门面和日志框架分别有哪些?
3.适配性最高的一组搭配是什么?