美文网首页SpringBoot
SpringBoot统一日志框架的使用

SpringBoot统一日志框架的使用

作者: GavinZZW | 来源:发表于2021-03-06 13:02 被阅读0次

    场景:A项目(slf4J + logback): Spring(commons logging)、Hibernate(jboss-logging)、
    mybatis....
    在项目中存在着各种不同的第三方 jar ,且它们的日志选择也可能不尽相同,显然这样是
    不利于我们使用的,那么如果我们想为项目设置统一的日志框架该怎么办呢?

    参考SLF4J 官方的解释

    image.png

    我们可以使用一种和要替换的日志框架类完全一样的 jar 进行替换,这样不至于原来的第三方 jar 报错,而这个替换的 jar 其实使用了 SLF4J API. 这样项目中的日志就都可以通过 SLF4J API 结合自己选择的框架进行日志输出。

    统一日志框架使用步骤归纳如下:

    1. 排除系统中的其他日志框架。

    根据上面总结的要统一日志框架的使用,第一步要排除其他的日志框架,在 Spring Boot 的 Maven 依
    赖里可以清楚的看到 Spring Boot 排除了其他日志框架(<exclusions>标签)。

    image.png

    我们自行排除依赖时也只需要按照图中的方式就好了。

    2. 使用中间包替换要替换的日志框架,导入我们选择的 SLF4J 实现。

    Spring Boot 是使用了 SLF4J+logback 的日志框架组合,查看 Spring Boot 项目的 Maven 依赖关系可
    以看到 Spring Boot 的核心启动器 spring-boot-starter 引入了 spring-boot-starter-logging

    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-logging</artifactId> 
    <version>2.4.0.RELEASE</version>
     </dependency>
    

    而 spring-boot-starter-logging 的 Maven 依赖主要引入了 logback-classic (包含了日志框架 Logback
    的实现),log4j-to-slf4j (在 log4j 日志框架作者开发此框架的时候还没有想到使用日志抽象层进行开
    发,因此出现了 log4j 向 slf4j 转换的工具),jul-to-slf4j ( Java 自带的日志框架转换为 slf4j).

    <dependencies>
     <dependency>
     <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId>
     <version>1.2.3</version> 
    <scope>compile</scope> 
    </dependency>
     <dependency> 
    <groupId>org.apache.logging.log4j</groupId>
     <artifactId>log4j-to-slf4j</artifactId> 
    <version>2.13.3</version>
     <scope>compile</scope>
     </dependency>
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jul-to-slf4j</artifactId> 
    <version>1.7.30</version> 
    <scope>compile</scope> 
    </dependency> 
    </dependencies>
    

    用 IDEA 工具查看 Maven 依赖关系,可以清晰的看到日志框架的引用


    image.png

    可见,Spring Boot 可以自动的适配日志框架,而且底层使用 SLF4j + LogBack 记录日志,如果我
    们自行引入其他框架,需要排除其日志框架。

    相关文章

      网友评论

        本文标题:SpringBoot统一日志框架的使用

        本文链接:https://www.haomeiwen.com/subject/uhnjqltx.html