二、日志的发展史

系列文章目录

一、日志系统是如何拖慢你的系统的

二、日志的发展史


 

 

 


一、历史

       日志对于程序猿来说,就像空气之于生物一样,平时注意不到它的存在,但是在查问题的时候却必不可少。日志对于我们来说平时注意不到,可能重要的原因就是日志组件面向门面的设计理念,使得一个项目从一个日志实现转换为另一个日志实现的时候,仅仅更换依赖jar包就可以实现完美替换。但是日志初期是没有践行这样一个理念的,下面来介绍一下日志的发展史。

      最早的日志组件是Apache 提供的Log4j,主要的贡献者是大神Ceki。log4j 能够通过配置文件轻松的实现日志系统的管理和多样化配置,是我们接触比较早的日志组件,几乎成了java 日志的标准,如它定义的Looger、Appender、Level等概念一直沿用至今。期间想让SUN 公司引入到java 标准库中,但被拒绝了。随即SUN 搞了个属于自己的日志组件。sun 公司在java1.4版本中,增加了日志库(Java Util Logging)。其实现基本模仿了Log4j的实现 。

       这两个组件推出后,因为之间没有什么关联,有些项目使用Log4j,有些项目使用JUL,一时开发起来造成了一定的混乱

       这个时候Apache 又出手了,它推出了一个Apache Commons Logging组件,JCL只是定义了一套日志接口,支持运行时动态加载日志组件的实现,也就是说,在应用代码里,只需调用Commons Logging 的接口,底层实现可以是Log4j,也可以是Java Util Logging,由于它很出色的完成了主流日志的兼容,所以基本上在后面很长一段时间是无敌的存在。连spring 也都是依赖JCL 进行日志管理。

        后来,Ceki从apache离职,自己创建了公司,觉得Apache Commons Logging 不够优秀,想搞个更牛的方案,于是slf4j 日志体系诞生了。

slf4j实际上就是一个日志门面接口,它的作用类似于Commons Loggins,并且他还为slf4j 提供了一个日志的实现:logback
这个时候可以发现:Java 的日志领域被划分为两个大营: Commons Logging和slf4j。

Log2j
因为slf4j 以及它的实现logback诞生以后,很快就赶超了原本apache的log4j体系,此时apache又出来说话了,这就是log4j2。apache在2012 年重写了log4j, 成立了新的项目Log4j2

      所以,现在市面上的日志组件的架构如下:

上层是门面,主要有slf4j和JCL,目前主流使用的就是slf4j。

下层是相应的实现,主要有log4j,JUL,logback,log4j2等等,目前主流使用的是logback和log4j2.

以slf4j为例,我们可以看下面的图示(官网)

slf4j作为日志门面,可以绑定多种日志实现,有些日志实现是日志实现是天然可绑定的,比如logbeck。有些日志实现需要通过桥接类进行绑定的,比如log4j。

参考:

https://zhuanlan.zhihu.com/p/133582429

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值