彻底搞懂混而不乱的Java日志体系

1 混而不乱的Java日志体系

1.1 Java日志发展史

在这里插入图片描述

1999年Ceki推出log4j日志框架,并捐给Apache。Ceki也加入Apache组织。据说Apache基金会还曾经建议Sun引入Log4j到Java的标准库中,但Sun拒绝了。
2002年Java1.4发布,Sun推出了自己的日志库JUL(Java Util Logging),其实现基本模仿了Log4j的实现。在JUL出来以前,Log4j就已经成为一项成熟的技术,使得Log4j在选择上占据了一定的优势;
2003年Apache推出了JCL(Jakarta Commons Logging)。JCL只是定义了一套日志接口(其内部也提供一个Simple Log的简单实现),支持运行时动态加载日志组件的实现,也就是说,在你应用代码里,只需调用Commons Logging的接口,底层实现可以是Log4j,也可以是Java Util Logging;
2006年,Ceki离开了Apache,回瑞典创建了QOS公司,然后先后创建了Slf4j(日志门面接口,类似于Commons Logging)和Logback(Slf4j的实现)两个项目;
2012年,Apache眼看有被Logback反超的势头,于2012-07重写了Log4j 1.x,成立了新的项目Log4j 2,2014年7月其GA版本(正式发布版)发布。

1.2 JUL

Sun公司在 jdk1.4版本增加了一个日志包java.util.logging,简称为jul,用以对抗log4j。

  • JUL控制台输出使用System.err 进行日志输出

在这里插入图片描述

1.3 log4j

log4j最后一次更新时间是2012年。apache已不在维护,建议使用log4j2😂

2 统一日志输出

2.1 Slf4j适配器

在这里插入图片描述

图片来自官网:http://www.slf4j.org/manual.html

2.2 Slf4j桥接器

在这里插入图片描述

图片来自官网文档:http://www.slf4j.org/legacy.html

    • jcl-over-slf4j.jar

      简化从 JCL 到 SLF4J 的迁移

    • log4j-over-slf4j

      简化从log4j 到 SLF4J 的迁移

    • jul-over-slf4j.jar
      简化从 JUL 到 SLF4J 的迁移

posted @ 2021-11-05 10:37  工程师搁浅  阅读(316)  评论(0编辑  收藏  举报