SpringBoot与日志

概述

log日志框架为了解决不同的日志实现造成的接口不一致问题,使用facade门面设计模式,通过定义一组抽象api来对客户程序屏蔽不同日志的内部实现差异。

日志门面(日志的抽象层)日志实现
JCL(Jakarta Commons Logging) SLF4J(Simple Logging Facade for Java) Jboss-loggingLog4j 、Log4j2、JUL(java.util.logging) 、Logback

我们通过选择一个左边的门面和右边一个实现即可。
日志门面:SLF4J
日志实现:Log4j2或者logback,目前log4j2更好。

SLF4J使用

  • 如何在系统中使用SLF4J
    开发中,日记记录方法的调用,不应该直接调用日志实现类,而是通过调用日志抽象层里面的方法。
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class Wombat {
   final Logger logger = LoggerFactory.getLogger(Wombat.class);
   Integer t;
   Integer oldT;
   public void setTemperature(Integer temperature) {
     oldT = t;        
     t = temperature;
     logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
     if(temperature.intValue() > 50) {
       logger.info("Temperature has risen above 50 degrees.");
     }
   }
 } 

图示如下:
在这里插入图片描述
每个日志的实现框架都有自己的配置文件。使用SLF4J以后,配置文件还是使用日志实现框架的配置文件格式。

日志框架统一为SLF4J

比如:A系统(slf4j+logback),spring(commons-logging),xxx
需要把所有的日志框架统一为SLF4J,需要使用SLF4J提供的桥接包。
在这里插入图片描述

总结

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

Springboot日志关系

在这里插入图片描述

  1. springboot使用的是slf4j+logback的方式进行日志记录;
  2. springboot通过导入中间替换包把其他的日志框架替换成了slf4j框架。
  3. 如果我们要引入其他框架,一定要把这个框架的默认日志依赖给排除掉。
    因为桥接包的包名和类名与日志框架的包名类名可能相同,导致jar包冲突。
    在这里插入图片描述

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

日志使用

springboot默认帮我们配置好了日志:

@SpringBootTest
public class TestLog {
    private static final Logger logger = LoggerFactory.getLogger(TestLog.class);
    @Test
    public void test() {
        logger.trace("trace level");
        logger.debug("debug level");
        logger.warn("warn level");
        logger.info("info level");
        logger.error("error level");
    }
}

我们可以在配置文件中指定相应包的日志级别,没有指定的走springboot默认配置的root根logger记录级别。

# 配置日志級別
logging.level.com.practice=trace

打印结果

TestLog in 8.19 seconds (JVM running for 12.556)
2021-04-12 22:35:46.204 TRACE 6620 --- [           main] c.practice.springboot.practice.TestLog   : trace level
2021-04-12 22:35:46.204 DEBUG 6620 --- [           main] c.practice.springboot.practice.TestLog   : debug level
2021-04-12 22:35:46.204  WARN 6620 --- [           main] c.practice.springboot.practice.TestLog   : warn level
2021-04-12 22:35:46.204  INFO 6620 --- [           main] c.practice.springboot.practice.TestLog   : info level
2021-04-12 22:35:46.204 ERROR 6620 --- [           main] c.practice.springboot.practice.TestLog   : error level
Disconnected from the target VM, address: '127.0.0.1:52858', transport: 'socket'

配置日志文件、路径等

示例:
在这里插入图片描述

自定义配置文件

参考springboot官网:springboot官网日志配置
只需要在类路径下添加特定日志框架的配置文件即可,配置文件名称按照官网给出的即可,springboot会使用你自定义的配置而不是默认的了。
在这里插入图片描述

  • logback.xml:直接被日志框架识别了,会绕过springboot。
  • logback-spring.xml:日志框架识别不了,不能直接加载日志的配置项,有springboot解析日志配置,可以使用springboot的高级profile功能(按照指定的环境加载相应的配置)。
    在这里插入图片描述

切换日志框架

可以更加slf4j官网给日志适配图来进行切换。

  • 比如slf4j+log4j的方式:
    在这里插入图片描述
  • 切换为log4j2
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

融极

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值