几乎在每个项目里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api、slf4j-log4j12还有log4j他们是什么关系?我把自己了解的和大家简单分享一下:

slf4j:Simple Logging Facade for Java,为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-log4j12初始化Log4j,达到最终日志的输出。

slf4j-api、slf4j-log4j12以及log4j三者之间是什么关系?相关推荐

  1. 微服务、容器、DevOps三者之间的演进关系,你清楚吗?

    微服务.容器.DevOps三者之间的演进关系 容器的普及,带来了微服务架构和DevOps的高速发展. 1 微服务的弊端 1.1 测试.发布工作量剧增 单体应用拆分成多个微服务后,虽能实现快速开发迭代, ...

  2. 序列、触发器和存储过程三者之间有啥关系

    序列.触发器和存储过程三者之间有啥关系? 好久没用oracle数据库了,今天复习了下oracle的序列.触发器和存储过程,之前对触发器和存储过程的概念有点模糊,今天来理理复习心得:存储过程相当于打包好 ...

  3. cron一点半到两点半之间每分钟_分辨率,定位精度,重复定位精度三者之间有什么关系?...

    这篇文章,本来应该在上周发出来. 但是,因为我上周去了青海甘肃大环线,一直在路上,所以就耽误了下来. 有意思的是,我们去甘肃的城市,碰巧和大大的重合,敦煌-嘉峪关-张掖-兰州. 这不,昨天刚回来,就恶 ...

  4. linux有哪些高级语言编译器,程序语言,操作系统,编译器三者之间有何关系?...

    程序语言,操作系统,编译器三者之间有何关系?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 程序语言,操作系统,编译器三 ...

  5. C语言与机器人 plc的关系,工业机器人、PLC与自动化三者之间有什么关系

    原标题:工业机器人.PLC与自动化三者之间有什么关系 工业机器人.PLC与自动化三者之间有什么关系,要了解三者的关系,前提需清楚这三个到底是什么? 1.工业机器人 工业机器人是一种多关节机械手或是多自 ...

  6. mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系

    DB.DBMS和DBS三者之间的关系是:DBS包括DB和DBMS.DBS是指数据库系统,数据库系统一般由四个部分组成,分别是:1.数据库:2.硬件:3.软件:4.人员. DB.DBMS和DBS三者之间 ...

  7. mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系_数据库

    DB.DBMS和DBS三者之间的关联是:DBS包含DB和DBMS.DBS是指数据库体系,数据库体系平常由四个部份组成,分别是:1.数据库:2.硬件:3.软件:4.职员. DB.DBMS和DBS三者之间 ...

  8. 如何区分Workflow、BPM与PRA?三者之间有什么关系?

    许多人会把工作流(Workflow)与业务流程管理(BPM)混淆,这是因为Workflow是业务流程管理的一部分.Workflow与业务流程管理(BPM)密切相关.最早的BPM解决方案主要集中于工作流 ...

  9. linux+kill+进程和线程,什么是程序,进程和线程?三者之间有何关系?

    进程 进程与线程的历史 进程与线程之间的关系 重点 进程 和 线程的概念 进程和程序关系 cpu在执行程序时什么叫进程 swap 内存的缺页异常 大的异常 小的异常 内存映射mmap 内存泄露 tas ...

最新文章

  1. 第五周项目四-长方柱形(1)
  2. mysql优化sql相关(持续补充)
  3. /sbin/ifup: configuration for eth0 not found解决
  4. python基础:zip和dict详解
  5. yii2 关掉php notice,yii2关闭错误提示
  6. oracle-pl/sql之一
  7. penpyxl basic function demo code
  8. 小a与星际探索---DP
  9. IMPORT MULTIPLE JS
  10. 9年经验,总结SEO职业瓶颈
  11. 国家级计算机实验教学师范中心,国家级实验教学示范中心
  12. 关于Eclipse安装ArchStudio 5插件出现An error occurred while collecting items to be installed......的解决方法
  13. 微信公众号的用户运营?
  14. 趋势一次一单EA,不加仓不网格,每单带止损止盈,风险可控
  15. 微软常用运行库合集(32+64位)
  16. SAP 采购发票校验
  17. Docker 4 之 Docker 客户端和守护进程
  18. 弱校联萌十一大决战之如日中天A Ariel【二进制+排序】
  19. 拼多多为什么不显示评论
  20. 大数据常用文件格式介绍

热门文章

  1. RT-Thread 事件(学习笔记)
  2. Three光线投射实例
  3. mac2600r_水星(MERCURY)MAC2600R路由器怎么设置?
  4. [gotoac]数论公式
  5. 私人linux远程连接,Linux to Linux 远程连接
  6. 计算机专业还有前途吗?从业9年的程序员告诉你优缺点
  7. Centos6.5设置静态IP并能进行联网
  8. java python rsa加密_使用bouncy castle和python PKCS1OAEP进行java RSA加密
  9. CocosCreator实战项目1:忍者跳跳跳
  10. [病毒分析]WannaCry病毒分析(永恒之蓝)