SpringBoot_日志-日志框架分类和选择

SpringBoot与日志,说这个日志之前呢,我们先说一个小小的故事,来给大家介绍一下日志的起源,与日志框架的关系,

如果说对这一块比较清楚了,那你就可以跳过我这个精彩的故事了,假设现在有一个开发人员,小张是一个每天加班的

开发人员,然后他要开发一个比较大型系统,开发一个大型系统,因为这个系统有点大,每次为了调试和测试方便,都是

喜欢System.out.println,关键数据在控制台打印了一下,讲关键数据打印在控制台,然后有一天项目开发完了,老板说

你这个system.out是不是有点太多了,你给我去掉吧,老板想要去掉他,小张一行一行给他注释掉,然后刚注释完老板又说,

我觉得你这个输出的还不错,输出了解项目的运行状况,那我们又打开,输出既然不错,那不如给我写到一个文件里面,也方便

我后来监控一下,小张又得改记录的代码了,这么麻烦我自己来写一个框架,记录系统的一些信息,运行时的一些信息,那么这个

时候日志框架小张就写出来了,小张高高兴兴的写了一个日志框架,叫zhanglogging,这个日志框架表现的还不错,以后都要用

这个日志框架了,他对这个日志框架很满足,结果随着时代在进步,他觉得这个框架是不是有点简陋啊,他突然想到了高达上的

功能,他想在日志输出的时候,他想出了几个高达上的功能,比如以前日志记录的时候,不管怎么输出,他都是阻塞的,启用

异步模式,异步记录和搜集日志,包括想要自动归档,比如每天的日志我都给你压缩起来,我放到一个文件里边,,每天要自动归档,

他想到了一大堆,天马行空的功能,然后你还别说,小张这个技术还是很厉害,然后他把这个功能还给实现出来了,

他叫zhanglogging-good.jar,

这个框架还真的不错,只不过小张的问题又来了,什么问题呢,他写了一个新的日志框架,里面的API和设计可能和以前已经不一样了,

那怎么办啊,把以前的框架卸下,换上新的框架,他还要重新修改API,修改之前相关的API,部分API可能有了变动,他要修改这个,

那我写了一个xiaozhang-good.jar,哪一天good也不行了,zhanglogging-perfect.jar,一个完美的日志框架,

那我每次需要做这个事,

要改代码是不是有点麻烦,想到JDBC跟驱动有关系,我们现在来写数据库,都面向接口编程,我们只需要把数据库的实现放进去就行了,

这就是我们数据库的驱动,那我们的日志框架为什么不这么设计呢,写了一个统一的接口层,我们暂且就叫做日志门面,也就是我们日志的

抽象层,大家不管用什么日志框架,你都用我这个日志抽象层,logging-abstract,我们这里有一个抽象层的jar包,以后我们进行

编码的时候,我们只面向他来进行编程,调他里面的代码,而要用到哪个日志,小张的good还是perfect,可以给项目中导入具体的

日志实现,小张觉得这种确实是比较好了,我们来面向统一接口层来开发,你要用什么,就用实现就可以了,我们这些jar包

都是来实现他的,我们之前的日志框架都是实现的抽象层

介绍市面上的日志框架,大大小小非常多,我们来列举下非常常见的,什么JUL,JCL,Jboss-logging,

logback,log4j,log4j2,slf4j,等等等等一大堆,但是他们是比较常用的,到底这么多框架我们要用哪些,

该怎么用呢,我们先来捋一下他的关系,他们关系是这个样子的

我们这边是我们的日志门面,日志门面就是我们说的日志抽象层,我们右边是日志的实现,

那么按照理所应当,我们就是要在左边选一个门面,也就是抽象层,左边选一个接口,右边来

选一个实现,哪些是门面呢,JCL就叫做Jakarta Commons Logging,给我们Commons-logging这个jar包,

我们Spring框架也一直在用,为什么叫JCL,就是因为它是Jakarta小组来开发的,Apache下的一个小组,

还有一个叫slf4j,叫Simple Logging Facade for Java,还有一个叫Jboss-logging,这三个都是日志门面,

比如我们LOG4J,包括JUL,java util工具包里面带的日志,包括Log4j2,Log4j的一个重大升级,还有Logback,

这个都是日志实现,按照我们这个想法,从左边抽一个,右边抽一个,我们不知道抽哪个,我们用排除法,从左边来,

那要从左边来的话,我先来排除jboss-logging,我们用的场景是在是太少了,生来就不是给我们普通的程序员来用的,

Jboss-logging一直都是特定的框架,我们来看JCL,JCL我们也删掉,为什么我们不用他,JCL最后一次更新是2014年,

只能赐他廉颇老矣,那么理所应当就要选择slf4j了,日志门面,我来选了SLF4J,而我们这个日志实现,我们来说一下,

Log4j和Logback,都是同一个人写的,Log4J当时写出来很不错的,只不过Log4j有性能问题,然后对log4j要进行升级了,

但是他觉得对log4j升级改动太大了,他就重新写了一个框架,叫Logback,他又要新写框架了,就和小张一样,我未来要有

更多的日志框架,咋办呢,他又写了一个日志门面叫做SLF4J,所以这三个框架,log4j,logback,slf4j,都是出自同一个人

之手,如果我选择SLF4J,理所应当就应该选择log4j或者logback,毕竟出自同一个人之手,适配性肯定是最高的,所以我

说一下为啥不选其他呢,log4j没有logback先进,所以我不要她了,而JUL,这是JAVA util工具包自带的logging,他为啥

要自带这个呢,因为log4j一出来以后,他害怕日志市场被别人占用了,勉强的来加一个日志,所以我们肯定也不用他,

然后log4j2呢,他其实是借了log4j之名,是我们Apache重新来做的一个日志框架,整个日志框架设计的也非常好,但是

就由于太好了,现在好多框架还没有适配起来,还没有用起来,所以我们最终选择logback,这是我们的一个选择,日志门面,

日志实现,那么Spring boot是怎么做的呢,因为他的底层是spring框架,Spring框架默认使用的是JCL,就是commons-logging,

以前我们导Spring框架都要导入commons-logging,不导就不行了,他默认使用的是这个,而Springboot对他们进行了一个包装,

springboot选用的也是slf4j和logback,springboot和我们一样机制,这就是我们最终的选择和springboot的选择

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值