slf4j-api、slf4j-log4j12以及log4j之间关系,及生产bug解决
来源:互联网 发布:php {{asset}} 编辑:程序博客网 时间:2024/06/05 23:02
本次系统生产上出现bug,手机无法接收到电子签名公司发送的短信验证码,原因在于我公司和电子签名公司都调用了slf4j,slf4j-api的jar包,但是二者相同jar包的版本不一致造成了jar包冲突,从而使得初始化过程无法生效。解决方案是,将签名公司含有和我公司调用相同的jar包,一律删除了,我公司将调用电子签名公司sdk包方式,改为单个逐一调用对方提供的jar包。这次bug的教训是,和对接系统交互过程中,并不是一股脑的让对方把他所有使用到的jar包都发给我方调用,并不是jar包越多越齐全越好,一定要注意双方调用的jar包,是否有冲突,即是否有重复的调用相同的jar包,而且该相相同的jar包版本是否一致。若不一致,则可能造成冲突。最简单的方法就是双方在交互过程中不要调用相同的jar包。
几乎在每个jar包里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api、slf4j-log4j12还有log4j他们是什么关系?我把自己了解的和大家简单分享一下:
slf4j:Simple Logging Facade forJava,为java提供的简单日志Facade。Facade:门面,更底层一点说就是接口。他允许用户以自己的喜好,在工程中通过slf4j接入不同的日志系统。更直观一点,slf4j是个数据线,一端嵌入程序,另一端链接日志系统,从而实现将程序中的信息导入到日志系统并记录。
因此,slf4j入口就是众多接口的集合,他不负责具体的日志实现,只在编译时负责寻找合适的日志系统进行绑定。具体有哪些接口,全部都定义在slf4j-api中。查看slf4j-api源码就可以发现,里面除了public final class LoggerFactory类之外,都是接口定义。因此,slf4j-api本质就是一个接口定义。
下图比较清晰的描述了他们之间的关系:
当系统采用log4j作为日志框架实现的调用关系:
首先系统包含slf4j-api作为日志接入的接口;
at compile时slf4j-api中public final class LoggerFactor类中
private final static void bind() 方法会寻找具体的日志实现类绑定,主要通过
StaticLoggerBinder.getSingleton();语句调用
slf4j-log4j12:链接slf4j-api和log4j中间的适配器。它实现了slf4j-apiz中StaticLoggerBinder接口,从而使得在编译时绑定的是slf4j-log4j12的getSingleton()方法
log4j:这个是具体的日- slf4j-api、slf4j-log4j12以及log4j之间关系,及生产bug解决
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间的关系
- slf4j-api、slf4j-log4j12以及log4j之间关系
- slf4j-api、slf4j-log4j12以及log4j之间的关系
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间的关系
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系
- slf4j-api、slf4j-log4j12以及log4j之间什么关系
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- spring mvc + mybatis 之MapperScannerConfigurer
- 【面试题】集合类的基本知识点
- 常用编程功能整理
- 众说微服务(MSOA)~
- hashset去重
- slf4j-api、slf4j-log4j12以及log4j之间关系,及生产bug解决
- java5、java6、java7、java8的新特性
- Info 716 while(1)
- /*学习笔记*/《c++语言程序程序设计(第4版)》郑莉 清华大学出版社
- Skiing
- PHP 常量的定义及如何设置
- c++整型与二进制的相互转化
- TCL嵌入式测试技术在Comware V7系统中的应用
- maven—profiles区分环境的配置文件