SpringBoot_日志-slf4j使用原理

前面我们既然选择了SLF4J,和logback的组合方式,那么我们系统里面如何使用slf4j呢,首先我们明确一点的就是,

我们开发的时候,日志记录如果我们要调方法,日志方法的调用,我们不应该调日志的实现类,应该调抽象层,不应该

直接调用日志的实现类,而是调用日志抽象层的方法,只要你调用日志实现层里的方法,它自动实现使用我们的日志,

所以我们想这么来做,那slf4j怎么用呢,可以来到slf4j的官方文档,我们如何在一个系统用它

https://www.slf4j.org/

我们来看主页,这里有一个用户手册,点击来

Before you start using SLF4J, we highly recommend that you read the two-page SLF4J user manual.

以后我们要日志记录非常简单,

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");
  }
}

这里有一段代码我复制过来,我们以后要日志记录,首先要给系统里边导入slf4j的jar包,和logback的实现jar,

如果调代码怎么调呢,人家就有示例,调用slf4j的LoggerFactory,我们抽象层的,获取记录器的东西,你传一个类别,

logger.info就可以记录一些信息了,可以打印到控制台,也可以输出到文件,以后要调用就这么来调,但是我们默认使用的

是logback的实现,如果你想要用其他实现也行,毕竟slf4j是一个抽象层,实现用什么都行

slf4j的实现,这里有一张图,我们只要看清这张图就行了

如果说我们在我们的应用里边,我们只到了slf4j的jar包,slf4j的具体jar包是slf4j-api.jar,我们只导入了这个jar,

它是浅蓝颜色,它是一个日志的抽象层,如果我们系统中只导入了slf4j,我们要进行日志的记录,LoggerFactory来进行

日志记录,那么就会输出到一个空的位置,因为我们没有任何的实现,而我们正确的用法呢,应该是这个样子,我的应用

程序,面向slf4j编程,调用它的方法进行日志记录,而我们在程序里面,也导了日志的实现,logback这些jar包,我们导了

他以后呢,调用的是这个接口,但是logback会进行实现,真正的将日志记录到文件,记录到控制台,这是我们如果slf4j如果

要用logback,就要这么来用,只需要导入slf4j和logback的jar就行了,但是如果slf4j要绑定log4j,log4j出现的比较早,

就根本没有想到会有slf4j这回事,因为后面的不断扩展以后,才想出了这个统一抽象层,所以我们按照这个原理,我们应用

程序还是调用统一抽象层,我们调用这个抽象层,slf4j的API,但是log4j根本没有考虑到slf4j这回事,那怎么办呢,我们需要

中间的一个适配层,这个适配层就相当于,上边实现了slf4j的具体方法,而在里面真正日志记录的时候,又掉了log4j的API,

上有老下有小的感觉,然后中间的适配层,我们把它导入进来,我们就能够用log4j了,如果要用log4j,系统里面导入这几个jar,

slf4j的jar,slf4j来适配log4j的jar,还有log4j真正实现的jar,那么与此同理,你要调用其他日志的实现,比如我们要调用java

util logging,调java util logging的话呢,他肯定也不考虑slf4j,所以我系统以后要编程,还是面向slf4j编程,但是我要把

适配层,适配层上要实现slf4j,下要调用java util的方法,那我们就从slf4j到java util的实现了,那么slf4j也有一些默认的实现,

如果我们导入slf4j-api.jar,就面向他编程了,我们只需要导入slf4j,简单的一些日志实现,就直接能用,slf4j-nop.jar,没有什么

实现的操作包,他也是输出到一个空的位置,slf4j要真正的来用就这么来用,这些深蓝颜色的,都是我们的一些实现,而这个绿颜色,

都是我们中间的适配层,他来适配一些本来不认识slf4j框架的,这些日志实现,这些不管是实现层,特别是中间的适配层,这些也是

slf4j官方为我们出品的,他来帮我们适配到其他层
我来给大家引入进来,大家在系统里面用slf4j,就是这么来用,但是我们还要补充一个问题,什么问题呢,

就是我们每一个日志框架,每一个日志的实现框架,都有自己的配置文件,那如果我们使用了slf4j以后,我们配置

文件写什么,配置文件还是做成日志实现框架的配置文件,我们slf4j只提供一个统一的抽象层,然后你用他实现了,

你就写他的配置文件,毕竟实现类是他,该怎么走,他要根据他的配置文件,所以我们重要的是这个,配置文件还是使用

日志实现框架自身的配置文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值