Spring---日志操作 slf4j+logback

日志配置

日志组件对于一个系统的重要性不言而喻,日志能帮我们快速定位线上问题,帮助我们快速找出问题处理问题。


一、今生前世
1、Simple Logging Facade for Java (SLF4J)

SLF4J 是一个日志接口,由其他日志来实现具体的操作,SLF4J为了解决JCL的缺点而生,简单易用。

slf4j(全称是Simple Loging Facade For Java)是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案。因此单独的slf4j是不能工作的,它必须搭配其他具体的日志实现方案,比如apache的org.apache.log4j.Logger,jdk自带的java.util.logging.Logger等等。


2、Jakarta Commons-Logging (JCL)

最初版本的日志门面,为了能够和Log4j愉快的相处,于是他就出现了。

提供了一套API门面来掩盖真正的Logger实现。这就是设计模式里常用的门面模式,可以进行不同Logger实现的切换。它的缺点是算法复杂,出了异常很难修复。


3、log4j

Log4j是Apache的一个开源项目,通过使用Log4j,可控制日志信息输送的目的地是控制台、文件、数据库等。

log4j是通过一个.properties的文件作为主配置文件的log系统,由于自身存在太多弊端,比如高并发情况下死锁问题,不支持占位符等

Log4j支持两种格式的配置文件:properties和xml。包含三个主要的组件:Logger、appender、Layout。


4、logback

logback是log4j团队创建的开源日志组件。与log4j类似,但是比log4j更强大,是log4j的改良版本。

logback由三个部分组成,其中logback-core是其他两个模块的基础。

  • logback-core
  • logback-classic
  • logback-access

5、log4j2

log4j2和logback和其实都是log4j的后代,最初都是出自同一个作者,比logback晚了好几年,这期间log4j2大量吸收了slf4j和logback的一些优点。

Log4j2与Logback非常类似,但是它有自己的亮点:如插件式结构、配置文件优化、异步日志。


二、日志门面标准接口:SLF4J

假设,你有一个项目,使用的日志组件时logj4,某天,你引入了redis框架,而该框架使用的是logback组件,于是,你不得不同时维护两套日志系统。过了两天,你突然发现log4j存在某些弊端,此时,你又希望将其换成新的log4j2框架,这就意味着,你需要去修改到处散落的原本的log4j的代码…

上述场景描述了一个编程中很常见的问题。例如,我们需要某种“抽象类”,我们只需关心调用什么方法即可连接数据库,至于不同的数据库具体的连接实现则交由具体的厂家来实现,这些问题我们不想关心,于是,JDBC 诞生了,而 slf4j 就是所有日志的 JDBC。

SLF4j与其他日志框架结合示意图:
示意图


三、日志配置(SLF4J +LogBack)
默认集成

Spring 框架选择使用了 JCL 作为默认日志输出。而 Spring Boot 默认选择了 SLF4J 结合 LogBack。


SpringBoot中依赖 logback 的 jar 示意图:
在这里插入图片描述

也就是说,如果你要使用 logback ,只要你有依赖spring-boot-starter,就不需要再去依赖 logback 的jar了。


SpringBoot中依赖 logback 的 jar 示意图:

与logback 类似,很多依赖的jar已经依赖该jar了,视图只是举个例子

在这里插入图片描述
当然,根据Maven的jar加载原则,你也可以导入自己的jar,方便版本控制,但是可能带来jar冲突问题,并且你还需要排除其他的版本关联依赖。


详细配置

配置文件约定
SpringBoot官方推荐

组件 命名规范
Logback logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml

logback-spring.xml 命名(推荐),将文件放置 resources 目录下:

logback-spring.xml 文件:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值