概述
简介
现在市面上有两款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桥接包,去除无用的日志组件实现的。
推出时间
日志 | 推出时间 |
---|---|
Log4j | 2001 |
JUL | 2002-2 |
JCL | 2002-8 |
日志门面 Slf4j | 2006 |
logback | 2006年slf4j之后 |
log4j2 | 2012 |
比较三大主流:log4j、log4j2、logback。首先要淘汰的是log4j,原因是不支持异步写日志、自动清理日志、异常发送邮件等高级的新功能。剩下的log4j2、logback,从支持的功能上来看是差不多的,但是处理速度上log4j2更胜一筹,在高并发项目中更占优势。
最后
以上就是神勇火车为你收集整理的日志体系简介的全部内容,希望文章能够帮你解决日志体系简介所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复