Spring周边:日志——总结
- 2019 年 11 月 23 日
- 筆記

有日志么?
日志有价值么?
日志框架了解么?

“日志”这个词最早见于航海领域,是记录航行主要情况的载体文件,内容包括操作指令、气象、潮流、航向、航速、旅客、货物等,是处理海事纠纷或者海难的原始依据之一。尔后延伸到航空领域,黑匣子就是一个重要的航空日志载体,调查空难原因时第一反应是找到黑匣子,并通过解析其中的日志信息来还原空难的事实真相 码出高效:Java开发手册
1. 日志框架总结
日志框架分为三大部分:
- 日志门面(例如:jcl、slf4j)
- 日志适配器
- 日志门面->日志库适配器(例如:slf4j-log4j12);
- 日志库->日志门面适配器(例如:log4j-over-slf4j);
- 日志门面->日志门面适配器(例如:jcl-over-slf4j);
- 日志库(例如:log4j、logback)
1.1. 日志门面
门面设计模式是面向对象设计模式中的一种,日志框架采用的就是这种模式,类似 JDBC 的设计理念。它只提供一套接口规范,自身不负责日志功能的实现,目的是让使用者不需要关注底层具体是哪个日志库来负责日志打印及具体的使用细节等。目前用得最为广泛的日志门面有两种:slf4j 和 commons-logging。
1.2. 日志库
日志库具体实现了日志的相关功能,主流的日志库有4个,分别是java util logging、log4j1.2.x、log4j2、logback;

2. 各种日志 JAR 包梳理

3. spring-jcl 项目源码分析
3.1. spring-jcl 与 jcl 的关联

不管怎样,当 jcl 与 spring-jcl 共存时,最终进行日志服务发现的肯定是 spring-jcl;
3.2. spring-jcl 的服务发现策略


感兴趣可以继续深入研究

参考:
《码出高效:Java 开发手册》 《Java 开发手册 1.5.0》