我是靠谱客的博主 神勇火车,最近开发中收集的这篇文章主要介绍日志体系简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简介

现在市面上有两款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桥接包,去除无用的日志组件实现的。
在这里插入图片描述

推出时间

日志推出时间
Log4j2001
JUL2002-2
JCL2002-8
日志门面 Slf4j2006
logback2006年slf4j之后
log4j22012

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

在这里插入图片描述

最后

以上就是神勇火车为你收集整理的日志体系简介的全部内容,希望文章能够帮你解决日志体系简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部