日志框架梳理

(一)日志框架

JCL:日志门面,只提供log接口,具体的实现规则在运行时动态寻找(只是接口,不提供具体的操作实现);

SLF4J:和JCL一样是日志门面,只提供log接口;

log4j:可提供具体输出日志操作的框架;

log4j2:log4j的升级版,输出效率和性能方面大大提升;

logback:可提供具体输出日志操作的框架;

JCL和SLF4J都需要和其他可提供具体输出日志操作的框架结合使用;log4j和logback都可单独以使用输出日志。

(二)日志jar梳理

2.1、slf4j-×××-version.jar和×××-slf4j-impl.jar

×××可以是log4j12/logback/jdk14等等。slf4j只提供log接口,需要绑定其他日志输出具体实现框架,slf4j-×××-version.jar和×××-slf4j-impl.jar就是一个绑定器。例如项目希望使用log4j输出日志,那么项目只需要针对slf4j接口编程,再引入slf4j-log4j12-version.jar和log4j.jar就可以了。

2.2、×××-over-slf4j.jar

假如你开发的项目调用了一个第三方组件,而这个第三方组件已经使用了jcl日志框架,但是你所开发项目想使用slf4j日志框架,这时你就需要一个桥接器(×××-over-slf4j.jar)把第三方组件的日志重定向输出到slf4j,如果你把jcl-over-slf4j.jar放到classpath下,就会将原来输出到jcl的日志转移到slf4j,然后slf4j又将日志交给具体的日志实现工具。

jcl-over-slf4j.jar--->slf4j--->slf4j-log4j12-version.jar--->log4j.jar--->输出日志

看到上面这个流程可能会发现一个有趣的问题,假如在classpath里同时放置log4j-over-slf4j.jar和slf4j-log4j12-version.jar会发生什么情况呢?日志会被踢来踢去,最终进入死循环。

参考博客:https://blog.csdn.net/s332755645/article/details/73992860,感谢这位博主的分享!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值