您当前的位置: 首页 > 

梁云亮

暂无认证

  • 2浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

日志体系简介

梁云亮 发布时间:2021-05-11 12:43:37 ,浏览量:2

简介

现在市面上有两款Java日志标准库,分别是Log4j与JUL(Java Util Logging),其中Log4j属于apache,而JUL属性SUN。 在这里插入图片描述

因为不同的日志库api不一样,2002年8月Apache推出了JCL(Jakarta Commons Logging),也就是日志抽象层,支持运行时动态加载日志组件的实现,当然也提供一个默认实现Simple Log:在ClassLoader中进行查找,如果能找到Log4j则默认使用log4j实现,如果没有则使用JUL 实现,再没有则使用JCL内部提供的Simple Log实现。 在这里插入图片描述 2006年Log4j的作者推出新的日志标准接口规范Slf4j(Simple Logging Facade for Java),也可以称为日志门面,用来对标JCL,它比JCL更优秀。 在这里插入图片描述 Slf4j之后的项目统一日志标准的方式:假设项目D、E都使用Slf4j接口,首先在代码层已经统一了,如果要做到日志标准统一也十分简单,直接替换日志标准库与对应的桥接包即可,就如下图所示: 在这里插入图片描述 Slf4j之前的项目统一日志标准的方式:假充把A、B、C项目都统一成Log4j日志输出,只需要引入Slf4j与相关的桥接包,再引入具体的日志标准库,比如Log4j,就完成了3个项目的统一日志标准,对代码层是零入侵,如下图所示: 在这里插入图片描述 2006年,基于Slf4j接口推出了Logback日志标准库,做为Slf4j接口的默认实现,Logback在功能完整度和性能上超越了所有已有的日志标准库。

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

到目前为止Java日志体系被划分为两大阵营,分别是Apache阵营和Ceki阵营,如下图所示: 在这里插入图片描述

Spring框架内部使用JCL做日志输出标准,项目使用Slf4j + Logback做日志输出标准。之所以能够让项目内的Spring保持统一日志输出标准就是通过引入正确的Slf4j桥接包,去除无用的日志组件实现的。 在这里插入图片描述

推出时间 日志推出时间Log4j2001JUL2002-2JCL2002-8日志门面 Slf4j2006logback2006年slf4j之后log4j22012

比较三大主流:log4j、log4j2、logback。首先要淘汰的是log4j,原因是不支持异步写日志、自动清理日志、异常发送邮件等高级的新功能。剩下的log4j2、logback,从支持的功能上来看是差不多的,但是处理速度上log4j2更胜一筹,在高并发项目中更占优势。 在这里插入图片描述

在这里插入图片描述

关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0416s