前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA日志发展史

JAVA日志发展史

作者头像
用户9282069
发布2021-12-13 15:58:54
6880
发布2021-12-13 15:58:54
举报
文章被收录于专栏:timu1

第一阶段

2001年以前,Java是没有日志库的,打印日志全凭System.outSystem.err

缺点:

  1. 产生大量的IO操作同时在生产环境中无法合理的控制是否需要输出
  2. 输出的内容不能保存到文件
  3. 只打印在控制台,打印完就过去了,也就是说除非你一直盯着程序跑
  4. 无法定制化,且日志粒度不够细

第二阶段

2001年,一个ceki Gulcü的大佬搞了一个日志框架 log4j后来( log4j成为Apache项目,Ceki加入Apache组织 Apache还曾经建议Sun引入Log4j到Java的标准库中,但Sun拒绝了.

image-20211212211243016
image-20211212211243016

第三阶段

sun有自己的小心思,2002年2月JDK1.4发布,Sun推出了自己的日志标准库JUL(Java Util Logging),其实是照着Log4j抄的,而且还没抄好,还是在JDK1.5以后性能和可用性才有所提升。由于Log4j比JUL好用,并且成熟,所以Log4j在选择上占据了一定的优势。

第四阶段

2002年8月Apache推出了JCL(Jakarta Commons Logging),也就是日志抽象层,支持运行时动态加载日志组件的实现,当然也提供一个默认实现Simple Log(在 ClassLoader 中进行查找,如果能找到Log4j则默认使用llog4j实现,如果没有则使用JUL实现,再没有则使用JCL内部提供的 Simple Log实现)。

image-20211212211444752
image-20211212211444752

但是JUL有三个缺点:

1.效率较低。 2.容易引发混乱。 3.使用了自定义ClassLoader的程序中,使用JCL会引发内存泄露。

第五阶段

2006年巨佬Ceki( Log4j的作者)因为一些原因离开了Apache组织,之后Ceki觉得JCL不好用,自己搀了一套新的日志标准接口规范Slf4j (Simple Logging Facacfor Java),也可以称为日志门面,很明显Slf4j是对标JCL,后面也证明了Slf4j比JCL更优秀。 巨佬Ceki提供了一系列的桥接包来帮助Slf4j接口与其他日志库建立关系,这种方式称桥接设计模式。 代码使用Slf4j接口,就可以实现日志的统一标准化,后续如果想要更换日志实现,只需引入Slf4j与相关的桥接包,再引入具体的日志标准库即可。

第六阶段

Ceki巨佬觉得市场上的日志标准库都是间接实现Slf4j接口,也就是说每次都需要配合桥接包,因此在2006年,Ceki巨佬基于Slf4j接口写出了Logback日志标准库,做为Slf4j接口的默认实现,Logback 也十分给力,在功能完整度和性能上超越了所有已有的日志标准库。

  • 根本原因还在于,随着用户体量的提升,Log4j无法满足高性能的要求,成为应用的性能瓶颈 目前Java日志体系关系图如下
    • 通过SLF4j桥接到具体的日志框架实现
image-20211212214154208
image-20211212214154208
  • 通过其他日志框架桥接到slf4j
image-20211212214332343
image-20211212214332343

第七阶段

2012年,Apache直接推出新项目Log4j2(不兼容Log4j) , Log4j2全面借鉴Slf4j+Logback 。 Log4j2不仅仅具有Logback的所有特性,还做了分离设计,分为log4j-api和log4j-core,log4j-api是日志接口,log4j-core是日志标准库,并且Apache也为Log4j2提供了各种桥接包。

而且log4j2 的性能提升很大,而且支持异步日志打印。增加很多新的特性。

image-20211212213142279
image-20211212213142279

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一阶段
  • 第二阶段
  • 第三阶段
    • 第四阶段
      • 第五阶段
        • 第六阶段
          • 第七阶段
          相关产品与服务
          日志服务
          日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档