当前位置: 首页 > 工具软件 > SLF4J > 使用案例 >

6.SLF4J

缑兴贤
2023-12-01

SLF4J

SLF4J介绍

  1. slf4j全称简单日志门面(Simple Logging Facade For Java)
  2. 主要是为了给Java日志访问提供一套标准,规范的API框架
  3. 主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j2,logback
  4. slf4j自己也提供了功能较为简单的实现,但是一般很少用到
  5. 对于一般的Java项目而言,日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j2,logback等),中间使用桥接器完成桥接。
  6. slf4j是目前市面上最流行的日志门面。
  7. slf4j主要提供的功能有:日志框架的绑定,日志框架的桥接

官网地址——http://www.slf4j.org/

依赖

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.26</version>
</dependency>
<!--   slf4j与log4j的适配层,本身包含log4j依赖不需要在引入log4j依赖了     -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.26</version>
</dependency>  
<!--   slf4j与JUL的适配层   -->
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-jdk14</artifactId>
	<version>1.7.25</version>
</dependency>
<!--   slf4j自己的日志实现框架功能较弱不建议使用    -->
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-simple</artifactId>
	<version>1.7.21</version>
</dependency>

SLF4J的绑定功能

  • logback,slf4j-simple,slf4j-nop 是在slf4j之后出的本身支持slf4j与slf4j整合不需要其他依赖直接引入依赖就可以完成整合(引入了slf4j-nop就是关闭slf4j日志功能)
  • JUL,log4j是在slf4j之前出的整合这两个需要引入其他依赖
  • 如果依赖出现了多个slf4j支持的那么会选择第一个使用
  • 总结:slf4j整合自己支持的日志实现框架只需要引入相关依赖就可以完成整合,不支持的日志实现框架需要引入一个新的依赖才能完成整合。

SLF4J的桥接功能

为什么需要桥接功能

比如有一个旧系统里面使用了log4j作为日志框架,但是现在想要升级为logback,
在旧系统中代码使用的Logger对象是log4j的,如果通过slf4j把依赖换为logback那么旧系统中的代码也需要改会很麻烦所以才有桥接功能。

总结下来就是:旧系统想要换日志框架但是还不希望改原本的代码就要完成替换。

使用

  1. 删除原有的日至框架依赖(log4j,JUL等)
  2. 引入slf4j依赖
  3. 引入要升级的依赖比如说logback
  4. 引入相关依赖
<!--如果旧系统的日至框架依赖是log4j那么引入他-->
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>log4j-over-slf4j</artifactId>
	<version>1.7.25</version>
</dependency>
<!--如果旧系统的日至框架依赖是jul那么引入jui-to-slf4j-->
<!--如果旧系统的日至框架依赖是jcl那么引入jcl-over-slf4j-->

注意

  1. jcl-over-slf4j与slf4j-jcl
  2. log4j-over-slf4j与slf4j-log4j12
  3. jul-to-slf4j与slf4j-jdk14
  4. 以上每组依赖均是冲突的不能同时出现否则会造成栈溢出
 类似资料: