四、SpringBoot之日志使用原理

1、日志框架

使用原因:(开发一个大型系统为例)

  1. 之前我们习惯用 System.out.prinltln(" "),将关键数据打印在控制台上,当项目上线后,必须手动将这些输出语句去掉
  2. 控制台输出的数据有利于我们项目上线后排查问题,这时我们需要将这些数据存放在一个文件中
  3. 这个时候我们通常的做法是引入一个jar包,实现以上的需求,比如 xxxx.jar 
  4. 使用了一段时间后,我们发现步骤3引入的jar包的功能不能满足我们的需求,假如不能实现自动归档等,这时我们需要将以前的框架卸下来,换上新的框架,重新修改之前相关的api(想想,这个工作量得多大,恐怕头发又得少不少吧哈哈)
  5. 这个时候我们想到了JDBC--数据库驱动             
  •     写一个统一的接口层,也就是我们平时说的日志门面(日志抽象层)  
  •     给项目导入具体的日志实现就行了,当需要换框架的时候,只需更换jar包或者maven配置,不用修改代码,这岂不是美滋滋  

2.SLF4J使用

如何在系统中使用slf4j

以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;

给系统里面导入slf4j的jar和logback的实现jar

蓝色框:表示的是slf4j相关的类

红色框:表示slf4j的抽象层方法

红色圆圈:一般getLogger()传入的参数为当前的类名,有利于准确定位日志信息对应的类

注意:

一般的话,不推荐第一种方法,直接调用抽象层的实现方法,没有日志输出

每一个日志的实现框架都有自己的配置文件,使用slf4j后,配置文件还是使用日志实现框架的配置文件

遗留问题

a系统(使用slf4j + logback实现框架),但a系统的搭建结合了 Spring(commons-logging)、Hibernate(jboss-logging)、Mybatis等框架,这个时候,整个系统的就像是一个日志全家桶,什么日志框架都有,这个时候我们想统一日志记录,即使别的框架也和我们一样的slf4j进行日志输出

 

如何让系统中的所有日志统一到slf4j

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

3.spring boot的日志关系

 

spring boot用它来做日志功能:

底层依赖关系;

总结:

  • SpringBoot底层也是使用slf4j+logback的方式进行日志记录
  • ​SpringBoot也把其他的日志都替换成了slf4j;
  • 中间替换包偷梁换柱将其他日志转换为slf4j;

  • 如果我们要引入其他框架,一定要把这个框架的默认日志依赖移除掉;

Spring框架用的是commons-logging,SpringBoot要排除commons-logging;

SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可;

四、日志使用

1、默认配置

SpringBoot默认帮我们配置好了日志,测试一下:

SpringBoot修改日志的默认配置:

在这个jar包里有SpringBoot的默认配置

2、指定配置
给类路径下放上每个日志框架自己的配置文件即可;SpringBoot就不使用他默认配置的了。


logback.xml:直接就被日志框架识别了;

logback-spring.xml(推荐):日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能;

如:

如果使用logback.xml作为日志配置文件,还要使用profile功能,会有以下错误:

no applicable action for [springProfile]

 

五、切换日志框架

可以按照slf4j的日志适配图,进行相关的切换;

面向slf4j编程,但是要用log4j实现,slf4j+log4j的方式;

或者这样做切换为log4j2:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值