JAVA日志发展史

技术JAVA日志发展史 JAVA日志发展史JAVA日志发展史
第一阶段
2001年以前,Java是没有日志库的,打印日志全凭System.out和System.err
缺点:产生大量的IO操作同时在生产

JAVA日志开发历史

JAVA日志发展史

第一阶段

2001年以前,Java没有日志库,只有System.outSystem.err打印日志。

缺点:

产生大量IO操作,无法合理控制生产环境是否需要输出。

输出内容无法保存到文件中。

只在控制台上打印,打印后就会通过,也就是说,除非你一直盯着程序。

无法自定义,日志粒度不够细。

第二阶段

2001年,ceki Gulc的一个大老板建立了一个日志框架log4j (log4j成为了Apache项目,Ceki加入了Apache组织)。

Apache也建议Sun将Log4j引入Java的标准库,但是Sun拒绝了。

第三阶段

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实现)的默认实现。

但是JUL有三个缺点:

1.效率低。

2.很容易造成混乱。

3.在使用自定义类加载器的程序中,使用JCL会导致内存泄漏。

第五阶段

2006年,巨人Ceki(Log4j的作者)因为某些原因离开了Apache组织。之后,Ceki觉得JCL不好用,她又增加了一个新的日志标准接口规范Slf4j(简单日志faccfor Java),也可以称为日志门面。很明显,Slf4j是JCL的标杆,后来证明SLF4J比JCL强。

巨型Ceki提供了一系列桥接包来帮助Slf4j接口与其他日志库建立关系。这种方法被称为桥接设计模式。

使用代码Slf4j接口,可以实现日志的统一标准化。如果以后想更改日志实现,只需要介绍Slf4j和相关的桥接包,然后再介绍具体的日志标准库。

第六阶段

Ceki Giant认为市场上的日志标准库都是间接实现Slf4j接口的,也就是说每次都需要配合桥接包。因此,2006年,Ceki Giant基于Slf4j接口编写了一个Logback日志标准库,这是Slf4j接口的默认实现,Logback也非常强大,在功能完整性和性能上超越了现有的所有日志标准库。

根本原因是Log4j无法随着用户量的增加满足高性能的要求,成为应用的性能瓶颈。

当前的Java日志系统图如下

通过SLF4j桥接到特定的日志框架。

通过其他日志框架桥接至slf4j

第七阶段

2012年,Apache直接推出了新项目Log4j2(与Log4J2不兼容),完全借鉴了Slf4j Logback。

Log4j2不仅具备了Logback的所有特性,而且还有单独的设计,分为log4j-api和log4j-core。log4j-api是日志接口,log4j-core是日志标准库,Apache也为Log4j2提供了各种桥接包。

此外,log4j2的性能得到了很大的提高,并且支持异步日志打印。添加许多新功能。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/143780.html

(0)

相关推荐

  • 互联网中如何设置禁止百度移动搜索对网页进行转码

    技术互联网中如何设置禁止百度移动搜索对网页进行转码这篇文章主要为大家展示了“互联网中如何设置禁止百度移动搜索对网页进行转码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“互联网

    攻略 2021年11月21日
  • Bytom猜测合约的使用方法是什么?

    技术Bytom猜谜合约使用方法是什么本篇内容介绍了“Bytom猜谜合约使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月20日
  • C++与R交互方法是什么

    技术C++与R交互方法是什么本篇内容主要讲解“C++与R交互方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++与R交互方法是什么”吧!一、C++代码1.cpp#i

    攻略 2021年11月29日
  • 怎么用Spring MVC创建Web应用

    技术怎么用Spring MVC创建Web应用这篇文章给大家分享的是有关怎么用Spring MVC创建Web应用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为了把Spring MVC运用到We

    攻略 2021年11月23日
  • 陨铁,什么是陨铁

    技术陨铁,什么是陨铁10克左右的陨石要价8600元,平均一克800多元,比黄金还贵陨铁。这东西真这么值钱?其实,对陨石稍有了解的爱好者都知道陨石价格不一,并没有固定价格,多数陨石并不是很昂贵,价格远低于黄金,低的几块钱一

    生活 2021年10月28日
  • mysql包含哪些知识点(mysql基础知识学习笔记整理)

    技术MySQL中的基础知识点有哪些这篇文章主要为大家展示了“MySQL中的基础知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中的基础知识点有哪些”这篇文

    攻略 2021年12月20日