1、日志框架
1.1 假设有一个人是小张,开发一个大型系统
1、由于系统有点大,为了调试和测试每次都用System.out.println("");将关键数据打印在控制台;等项目开发完就要把所有的syso去掉?一行一行的去掉或者注释掉很麻烦,我们不如写在一个文件里,方便后来的监控和运行状态。
2、框架来记录系统的一些运行时信息;日志框架 ; 小张写了一个日志框架,名为 zhanglogging.jar;
3、高大上的几个功能?异步模式?自动归档?xxxx? 随着时代进步,进一步改良为:zhanglogging-good.jar?
4、将以前框架卸下来?换上新的框架,重新修改之前相关的API;更加优良的:zhanglogging-prefect.jar;
5、JDBC—数据库驱动;
现在写数据库都是面向接口编程,然后把数据库的实现放进去就行了
为所有的日志框架写了一个统一的接口层;暂且就叫日志门面(日志的一个抽象层);logging-abstract.jar;
到底使用2,3,4中的那个jar包,我们只需要给项目中导入具体的日志实现就行了;我们之前的日志框架都是实现的抽象层;
1.2 市面上的日志框架;
JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…
| 日志门面 (日志的抽象层) | 日志实现 |
|---|---|
| Log4j JUL(java.util.logging) Log4j2 Logback |
1.3 选择理由:
JCL:版本太老
jboss-logging:用的场景太少了
Log4j,SLF4j,Logback都是同一个人所写。Log4j的进化版是Logback
如果选了SLF4j ,理所当然的选择Log4j或者Logback;
Log4j2,是Apache写的日志框架,因为写的太好了,很多框架还没有用起来。
所以我们选择SLF4J,Logback
1.4
左边选一个门面(抽象层)、右边来选一个实现;
日志门面: SLF4J;
日志实现:Logback;
SpringBoot:底层是Spring框架,Spring框架默认是用JCL;
**SpringBoot进行了包装 选用 SLF4j和logback;**