前面说了slf44的使用原理,但是实际在开发的时候,我们可能场景更复杂一点,一些遗留问题我们来说一下,什么遗留问题呢,假设现在是A系统,我开发A系统的时候,我是使用slf4j+logback的方式,我是面向slf4j编程,里面的记录都是使用slf4j,但是我在开发A系统的时候,我要依赖spring框架,我可能还要依赖hibernate框架,我可能还要依赖mybatis,可能一大堆,但是每一个框架,他在底层可能也用到了日志,而且还各不相同,比如我们Spring底层用的就是commons-logging,它是用它来做日志记录的,而hibernate使用的是jboss-logging,他又用他来做日志记录,等等等等我们就不说了,那么现在就出现了什么问题呢,我们系统里边既有slf4j和logback,我用它来做日志记录,而其他框架又用别的日志记录,这个感觉就是一个日志杂种一样,这也有那也有,那我们现在想要做一件事,就是统一日志记录,即使别的框架,你最终也用到slf4j和logback,即使是别的框架,和我一起使用slf4j和logback,进行输出,即使框架底层的一些日志,我要调配置文件,我就不用写commons-logging配置,我就写logback一个配置就行了,我们统一都让他来用,那这个能不能做啊,我们也能做,我们看slf4j的首页https://www.slf4j.org/有一个legacy APIs.https://www.slf4j.org/legacy.html在这也有一张图

帮我们统一来使用slf4j,我们应用程序,以前要用slf4j+logback,我们先竖着看,我们应用程序面对slf4j编程,但是事情往往不那么美,我们应用程序可能依赖别的框架一大堆,而每一个框架又用不同的日志,有些框架用commons-logging,有些用log4j,有些用java util logging,而我把所有的框架统一都用slf4j,我们可以这么来做,我们把其他框架的所有这些日志,我用这些包来换,如果你的框架是commons-logging-api,你用这个jcl-over-slf4j,这个jar包,叫替换你这个commons-logging,替换的意思,也就是你要把对commons的依赖,排除掉,但是我们想想,如果我正在使用spring框架,我排除了commons-logging,我就单说spring,spring都运行不起来了,他都会报错,commons-logging找不到,他在框架的底层,凡是记录日志,都要用到commons这个类,那我就用新的jar包,新的jar包其实就是偷天换日包,狸猫换太子包,这个包的功能,其实就是说,跟commons-logging一样,commons-logging里面有啥类,这里面也有什么,但是我们spring已经把commons-logging排除掉了,我引入了这个包,但是我们里面要使用commons-logging这个类,在这个包里面还是有的,然后我们spring框架就不会报错了,调用的类在我新的包里面有,真正的实现怎么办呢,它又调到slf4j,slf4j又调到真正的实现,我们相当中间又有一个适配层,可以把它叫做一个包装层,Commons-logging用jcl,log4j去掉用log4j-over-slf4j,相当于把log4j转成slf4j,你把原来的java utillogging,你给我去掉,然后用jul-to-slf4j,就是用这些东西,这些就是不同的日志框架,转换成slf4j的转换,再举一个例子,我现在想要slf4j+log4j的组合,我日志接口,我选择slf4j,我的实现我选择log4j,还是按照我们以前的用法,我们先竖着来看,那就应该是我程序开发的时候,我面向slf4j编程,而slf4j最终是用log4j来做日志记录,但是由于log4j还不知道slf4j,我们导了中间的一个适配层,如果我们是单线来使用,没啥问题,但是我们往往在这个应用中,又有别的框架在使用别的日志,如果他在使用log4j,那就没得说了,不用管,它使用的是commons-logging和java util logging,怎么办呢,那就把别的框架的commons-logging,首先排除掉,然后用他替换,java util logging用他替换,我们是这种,如果我们相用slf4j加入java util logging的方式,那怎么办,同样我们竖着来看这一支,由于我们应用里面导入了其他的框架,我就把其他应用要用的日志包,我来排除掉,然后用jar包来替换一下,但是替换到底是怎么办的,你一会可以看到源码,所以我们想要其他日志,统一起来,就要这么来用
我们想要统一日志记录也行,你给我这么做,如何让系统所有的日志都统一到slf4j,很简单,三步走,第一步先将系统中其他日志框架先排除出去,比如我导spring的时候,我让他别导入commons-logging,但是我们如果只做排除,spring框架可能就运行不起来了,用中间包来替换原有的日志框架,中间包的作用就是用来替换,然后接下来第三步,我们再来使用slf4j其他的实现,我要用logback的,那你把其他的给转换过来,如果我要用log4j的,那你就把其他的给转换过来,springboot也是这么来做的

SpringBoot_日志-其他日志框架统一转换为slf4j相关推荐

  1. java sl4j 日志_Java日志框架Slf4j+Log4j入门

    一.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志 ...

  2. Java日志框架 -- SLF4J日志门面(入门案例、SLF4J优点、SLF4J日志绑定、SL4J桥接旧的日志框架)

    1. SLF4J日志门面 JCL日志门面逐渐被淘汰了,因为他无法动态的扩展具体的日志实现框架. 简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Ja ...

  3. 日志框架(3) : 日志门面、JCL介绍、SLF4J介绍

    文章目录 日志门面 日志门面概述 门面模式(外观模式) 日志门面 常见的日志框架及日志门面 JCL简介 SLF4J SLF4J简介 SLF4J桥接技术 SLF4J特点 SLF4J集成日志实现(jul, ...

  4. spring cloud多模块项目框架搭建-集成SLF4J和log4j2日志组件

    第七章  集成SLF4J和log4j2进行日志管理 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块项目框架,并不是一个spring cloud的demo而已,提供分布式系统的 ...

  5. SpringBoot_日志-SpringBoot日志关系

    我们看到其他日志统一到slf4j的原理,我们看一下Springboot里的日志是怎么做的,首先这是springboot帮我们项目创建的配置文件,pom文件引入了web依赖,还引入了测试依赖,而这些依赖 ...

  6. logback日志pattern_003、Spring Boot使用slf4j进行日志记录

    在开发中,我们经常使用 System.out.println() 来打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗.我们实际项目中使用的是 slf4j 的 logb ...

  7. 日志规范之为什么要使用SLF4J

    日志规范 日志对项目而言,其重要性不言而喻,如果没有日志,生成环境的问题就无法定位,面对多种日志框架,如:JDK14.simple.Log4j.Logback等,视乎我们有开始纠结了,到底使用哪个呢? ...

  8. 日志说明以及格式统一规范

    日志说明以及格式统一规范 https://blog.csdn.net/weixin_44259356/article/details/98724878 1日志的级别 FATAL.ERROR.WARN. ...

  9. Android崩溃日志框架,崩溃日志上传框架 LogReport

    软件介绍 LogReport是一个崩溃日志上传框架 ,当App崩溃的时,把崩溃信息保存到本地的同时,自动给GitHub提交崩溃issue,你只需要几句,就能完成所有配置,更多细节请了解下方 另外,崩溃 ...

最新文章

  1. 【sox】使用sox增加混响效果
  2. [译] React Native vs. Cordova、PhoneGap、Ionic,等等
  3. 将json转换成struts参数
  4. JavaScript类型判断
  5. html语言填充没有只有描边,HTML5 Canvas笔记——交互绘制文本(描边、填充、阴影、渐变填充、图案填充、文本的属性设置)...
  6. NYOJ 70 阶乘因式分解(二)
  7. linux下安装新硬盘并挂载mount
  8. PyCairo 中的基本绘图
  9. 2020牛客国庆集训派对day2 F题 Java大数处理
  10. 机器学习面试——XGBoost,GBDT,RF(上)
  11. (pytorch-深度学习系列)CNN的多输入通道和多输出通道
  12. Oracle sqlldr
  13. java和前端哪个难学?
  14. 网络协议:TCP/IP协议,你看懂了吗?
  15. pytorch 入门学习多分类问题-9
  16. 利用双向注意流进行机器理解
  17. 15.Linux 高性能服务器编程 --- 进程池和线程池
  18. android调用webservice,Android开发调用WebService的方法示例
  19. 秋招之8.31农行研发中心笔试
  20. python 中sample是什么_python中的sample什么意思

热门文章

  1. POPTEST老李分享修改dns ip的vbs代码
  2. 有关单点登录的几种方案
  3. 免费图标下载:100个手绘的PSD图标
  4. 新浪微博客户端(eoe)
  5. Jenkins+ant+Jenkins接口持续集成测试配置
  6. Java解析Excel工具类(兼容xls和xlsx)
  7. 瀑布流第二种方式————基于ajax方式
  8. CSS之div和span标签
  9. 新闻发布项目——业务逻辑层(commentService)
  10. WordPress博客后台不能显示所有主题和无法编辑主题的问题的解决方法