Java领域的log纷争

 

Java领域中日志框架纷争不断,目前大家比较熟知的有 log4j、slf4j、logback、jcl(commons-logging)、jul(java-util-logging)、log4j2等,那么它们到底是怎么发展的呢?它们之间的关系又是怎样的呢?我们又该怎么选择这些日志框架呢?

 

第一篇:日志框架发展历史

历史上最先出现的是apache开源社区的log4j,当时log4j一支独秀,发展迅速,成为了java日志的的标准。然而,好景不长,实力雄厚的Sun公司在jdk1.4中增加了JUL日志实现,企图对抗log4j,加上当时Java界还有其他几个实力不怎么地的日志工具,它们的出现直接导致开发者使用日志系统混乱,因为这些日志系统互相没有关联,替换和统一也就变成了比较棘手的一件事。想象下你的应用使用log4j,然后使用了一个其他团队的库,他们使用了JUL,你的应用就得使用两个日志系统了,然后又有第二个库出现了,使用了simplelog。这个时候估计让你崩溃了,这个状况交给你来想想办法,你该如何解决呢?进行抽象,抽象出一个接口层,对每个日志实现都适配或者转接,这样这些提供给别人的库都直接使用抽象层即可。不错,开源社区提供了commons-logging抽象,被称为JCL,也就是日志框架了,确实出色地完成了兼容主流的日志实现(log4j、JUL、simplelog),基本一统江湖,就连顶顶大名的spring也是依赖了JCL。看起来事物确实是美好,但是美好的日子不长,接下来另一个优秀的日志框架slf4j的加入导致了更加混乱的场面。比较巧的是slf4j的作者(Ceki Gülcü)就是log4j的作者,他觉得JCL不够优秀,所以他要自己搞一套更优雅的出来,于是slf4j日志体系诞生了,并为slf4j实现了一个亲子——logback,确实更加优雅,但是由于之前很多代码库已经使用JCL,虽然出现slf4j和JCL之间的桥接转换,但是集成的时候问题依然多多,对很多新手来说确实会很懊恼,因为比单独的log4j时代“复杂”多了,抱怨声确实很多。到此本来应该完了,但是Ceki Gülcü觉得还是得回头拯救下自己的“大阿哥”——log4j,于是log4j2诞生了,同样log4j2也参与到了slf4j日志体系中,想必将来会更加混乱。

 

第二篇:日志框架之间的联系

 

基于面向接口开发,使用的时候左边选一个日志门面(接口),右边选一个日志实现。

JCL最后一次更新是在2014年,廉颇老矣尚能饭否。所以门面推荐使用slf4j

 

第三篇:slf4j+日志实现  的4种组合

 

这张图大家要竖着看,例如黑色那一列就是一种组合。

 

第一种实现:slf4j+logback(推荐使用,SpringBoot也是选用该组合实现日志)

需要的jar包:slf4j-api.jar+logback-core.jar+logback-classic.jar

 

第二种实现: slf4j+log4j  由于log4j出现的比slf4j早很多,所以log4j为了适配后来的slf4j,通过slf4j-log412.jar来做适配

需要的jar包:slf4j-api.jar+slf4j-log412.jar+log4j-jar

 

第三种实现:slf4j+JUL   JUL和log4j一样,需要适配器来适配slf4j,由于jdk自带java.util.logging,所以只需要两个jar包

 

需要的jar包:slf4j-api.jar+slf4j-jdk14.jar

 

第四种实现:slf4j-api.jar+slf4j-simple.jar  它是slf4j的一种简单实现的日志

 

 

第四篇:实例篇

slf4j+log4j实现日志输出:https://blog.csdn.net/qq_37936542/article/details/79045188

slf4j+logback实现日志输出:https://blog.csdn.net/qq_37936542/article/details/80839389

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值