日志框架介绍(SLF4J及其使用)

x33g5p2x  于2022-02-07 转载在 其他  
字(1.2k)|赞(0)|评价(0)|浏览(488)

本文主要介绍

1.日志框架基本介绍及Spring Boot中默认使用框架(SLF4J+LogBack);

2.SLF4J的使用

3.项目中日志框架统一问题

4.Spring Boot中如何实现日志框架统一问题(3的最佳实践)

1. 日志框架基本介绍

一般情况下搭建日志框架时,搭建 日志抽象层(定义接口) + 日志实现层组合 ,项目代码中应该使用抽象层,不应该使用日志实现类;

常见的日志框架包含:

日志抽象层JCL(2014年不再维护), SLF4Jjboss-logging

日志实现层jul(java.util.logging,jdk工具包下提供的),log4j, LogBack(log4j存在性能问题,logback是基于SLF4J抽象层编写的实现层), log4j2 (Apache下的,功能强大,但与其他的框架整合并不广泛)

(注:SLF4J,log4j,logback为同一个作者)

Spring框架选择了JCL作为默认日志输出;Spring Boot选择的是 SLF4J + LogBack作为默认日志;

2.SLF4J框架的使用

SLF4J日志框架基本使用 (抽象层 + 实现层)

1,引入SLF4J的Jar

2,引入实现层(log4j, jul等)对应的jar

3,引入对应实现层的slf4j适配器jar (适配器jar由SLF4J提供的,编写了SLF4J接口类的实现,不同适配器实现接口时,调用的是对应的实现层框架的方法;实现层为Logback时,不需要适配器jar,因为logback就是基于SLF4J抽象层编写);

3. 项目中日志框架统一问题

当项目中引入多个第三方jar,而每个jar底层使用的日志选型不一样,造成项目中日志框架混乱【Spring(commons logging)、Hibernate(jboss-logging)】

SLF4J提供的解决方案:引用第三方jar时,exclude对应的底层日志A.jar,引入由SLF4J提供的日志转换器 B.jar(当前适配器B.jar 定义了A.jar中一摸一样的类和方法,方法中通过调用SLF4J的API实现)

具体步骤:

  1. 排除系统中其他的日志框架
  2. 使用SLF4J提供的转换器包替换要替换的日志框架
  3. 引入要使用的SLF4J实现JAR

4.Spring Boot中如何实现日志框架统一问题(B的最佳实践)

Spring Boot 中使用的默认的日志框架为 SLF4J + LogBack

  1. 在spring-boot-dependencies中exclusion其他日志框架(3中1步骤)

  1. Spring Boot中spring-boot-starters 依赖了 spring-boot-starter-logging,而在spring-boot-starter-logging中 定一个了log4j及jul对应的转换包jar 及 logback对应的jar (3中的2 ,3 )

相关文章