Spring Boot知识系列—Spring Boot整合日志框架【详解】

当我们在进行web开发时,经常会用到各种各样的框架,常见的有spring、mybatis、hibernate等等,每个框架底层都有着自己的日志实现,那么难道我们在进行开发时,还需要在使用不同框架的时候使用其对应的API嘛?这将会大大增加我们的开发成本。还有如果我们在后期对项目进行二次开发时,如果要换日志框架,难道还得需要把原本的日志API全部替换掉吗?
此时我们在想,如果每个日志框架能像我们平时开发时面向接口开发多好,所有的日志框架都统一API,但是实现可以各不相同,这样就能解决上面所说到的问题了。

而这种思想模式,我们可以称之为门面模式。顾名思义,就是我们面向开发者的API是相同的,但是实现层还是由每个框架来决定的。

所以,SpringBoot帮我们已经做好了。它的日志门面选用的就是 SLF4J,而日志实现选用的是Logback。

一、SLF4J 的使用

从 SLF4J官网上,我们可以看到详细示例,例如:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
   
  public static void main(String[] args) {
   
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

在这里插入图片描述
从上图中,我们可以看到,如果log4j和JUL想使用SLF4J作为日志门面,还需要一层适配层。例如,如果要使用 SLF4J 作为 log4j 的门面,就必须引入 slf4j-api.jar 和 slf-4j-log412.jar 的依赖。其中 slf-4j-log412.jar 就是用来做适配的,我们在调用slf4j API 的时候其实是在调用 slf-4j-log412.jar 中的API,而 slf-4j-log412.jar 中的API执行的又是 log4j中的具体方法。

SpringBoot的知识点很多,不只是日志方面的,还有很多方面需要学习的,我这还有很多的学习资料和教程视频,都是Java后端方面的,有需要学习的小伙伴都可以点击进入,暗号:css,还有学习路线图,有需要学习的小伙伴都可以进群,大家一起学习交流!
由于篇幅有限,只能展示其中的一点学习教程,有需要的可以点击进入,暗号:css,可以免费提供的。

二、SpringBoot 中日志的使用

(一)SpringBoot整合其他框架日志门面

我们知道,SpringBoot日志是使用SLF4J作为日志门面,但是其他框架肯定也有自己的日志门面,例如 Java Commons Logging ,Jboss Logging 等等,那么如果我想整个项目都使用SLF4j作为日志门面怎么办呢?

不用担心,SpringBoot已经帮我们做了一波偷梁换柱的操作。在没看SpringBoot如何实现之前,我们来看下面这张图:
在这里插入图片描述
通常,我们依赖的某些组件依赖于SLF4J以外的日志记录API。为了解决这种情况,SLF4J附带了几个桥接模块,这些模块将对log4j,JCL和java.util.logging API的调用重定向,就好像它们是对SLF4J API一样。

所以,我们可以总结一下如何让系统中所有的日志都统一到SLF4J:

  1. 将系统中其他的日志框架先排除出去
  2. 用中间包来代替原有的日志框架
  3. 导入slf4j其它的实现

当我们在构建SpringBoot项目时,引入了一层依赖:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.1.1.RELEASE</version><
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值