在编程中,日志可以快速的帮我们进行定位到异常信息以及生产问题的分析,但是由于java 日志框架繁多并且不同系统中获取采用的是不同的日志框架,就导致了对于日志的管理以及分析是一个很繁重的事情,那么有没有一个框架用于解决这一个现象,来规范统一项目的日志处理,由此 SLF4J应用而生; 

  SLF4J 提供了java 日志系统的门面,日志的实现由SLF4J 进行自动适配,SLF4J 只进行抽象适配,并不负责日志具体的实,具体的实现还是由开发者自己进行选择需要的日志框架。就不会出现一个应用多个日志框架的情况,从而达到日志由一个统一日志框架实现的目的。

   说了这么多,我们来看一下我们常用的日志门面有:commons-logging(jul), slf4j  用于进行整合统一项目日志框架;

        java 日志真正的实现有:log4j , log4j2, jul,logback simpleLog 等;

 

    

 

 

 

  下图是SLF4J 实现某一日志框架的过程:

      1. 进行替换项目已有的日志框架以及门面,把所有日志统一到slf4j 门面上;

      2. 进行日志桥接到需要使用到日志框架中;

   

  1.  SLF4J 提供了狸猫换太子的方式,创建相同的包名字,进行不同的实现来确保一些常用的日志框架的日志使用全部由slf4j 进行统一管理;

    •   jul-to-slf4j:jdk-logging到slf4j
    •   log4j-over-slf4j:log4j1到slf4j
    •   jcl-over-slf4j:commons-logging到slf4j

  2. 有了这些 jar 包,这些日志框架都交给了slf4j进行了统一管理,再配置其他日志框架向slf4j 转换桥梁的jar包,就可以让单独一个日志框架进行日志的输出,避免混乱局面。

  

    • logback-classic ,logback-core :logback 日志框架实现
    • slf4j-log412: log4j 日志框架的实现
    • slf4j-jdk14:jul 日志框架的实现

桥接如下: 

 

 

posted on 2019-05-09 14:18  iscys  阅读(200)  评论(0编辑  收藏  举报