SpringBoot系列大全(二)SpringBoot日志的使用

SpringBoot日志的使用

市面上的日志框架有:JUL(java.util.logging)、JCL(jakarta common logging)、SLF4J(Simple Logging Facade for Java)、log4j、logback、jboss-logging、log4j2等等

日志门面(日志的抽象层) 日志实现
SLF4J、jboss-logging、JCL JUL、log4j、logback、log4j2

SpringBoot底层是Spring框架,Spring框架默认使用JCL
SpringBoot默认选择SLF4J和logback

在SpringBoot应用中使用日志记录时,应该使用抽象层的方法,

使用案例:

/**
* 导入slf4j的jar包
*/
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的图示
SpringBoot系列大全(二)SpringBoot日志的使用_第1张图片

每个日志实现都有自己的日志配置文件,因此虽然使用SLF4J,但是配置文件还是要遵循实现日志框架的配置文件标准。

在SpringBoot应用中,常常会整合第三方框架,而第三方框架采用的日志框架又不是统一的,那么如何在整个应用中只采用使用一种日志框架而又不影响第三方框架的正常使用呢?

  • 将系统中其他日志框架先排除出去
  • 用中间包替换原有的日志框架
  • 再导入SLF4J其他的实现

SpringBoot的日志关系
SpringBoot系列大全(二)SpringBoot日志的使用_第2张图片

总结:
1.SpringBoot底层使用slf4j和logback来进行日志记录
2.SpringBoot把其他的日志都替换成lslf4j
3.中间包都转换成了slf4j的日志工厂
4.如果引入了第三方的框架,一定要把这个框架的默认日志依赖排除掉

例如:Spring框架使用的commons-logging的日志记录,在SpringBoot中有如下操作:
SpringBoot系列大全(二)SpringBoot日志的使用_第3张图片

直接将Spring框架的依赖排除掉,再使用转换包中的同名的日志(已经换成slf4j)来补充缺失的日志依赖,以保证Spring框架的正常使用

SpringBoot能自动适配所有的日志,并且底层使用了slf4j+logback实现日志记录,引入其他框架时,只需要将这个框架依赖的日志框架排除掉即可!!!

Demo

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

@Test
public void logTest() {

  //获取logger记录器
  Logger logger = LoggerFactory.getLogger(getClass());
  //日志的级别   由低到高:trace
  //可以调整输出的日志级别,日志就会在这个级别及以后的高级别输出
  logger.trace("这是trace日志。。。。");
  logger.debug("这是debug日志。。。。");
  //SpringBoot默认调整的是info级别
  logger.info("这是info日志。。。。");
  logger.warn("这是warn日志。。。。");
  logger.error("这是error日志。。。。");
}

也可以在application.properties配置文件中对日志进行相关的配置

#配置日志输出级别,在com.gabo包下,默认是root(info)
logging.level.com.xxx = trace


#不指定路径会在当前项目的根目录下生成springboot.log日志记录文件
#指定路径,会在指定位置生成对应的日志文件
#logging.file=D://springboot.log

#在当前磁盘的根路径下创建spring文件夹和里面的log文件夹,使用spirng.log作为默认文件
logging.path=/spring/log

#在控制台输出的日志的格式
#logging.pattern.console=%date{yyyy-MM-dd HH:mm:ss}] [%thread] %-5level %logger{50} -  %msg%n

#在指定文件中的日志输出的格式
#logging.pattern.file=%date{yyyy-MM-dd HH:mm:ss} ========= [%thread] ================= %-5level %logger{50} ==== %msg%n

在SpringBoot应用中一般会在resources目录下建一个logback.xml,里面配置了相关的日志内容,而SpringBoot官方还推出了logback-spring.xml的日志配置文件,那么这两种命名有什么区别呢?

        


        
        
            [%date{yyyy-MM-dd HH:mm:ss}] --- [%-5level] [%logger:%line] --%mdc{client} %msg%n
        
        
            
            [%date{yyyy-MM-dd HH:mm:ss}] ==== [%-5level] [%logger:%line] --%mdc{client} %msg%n
        

切换日志框架

  • 可以参照slf4j的官网提供的slf4j的适配图,进行相关的配置

假如从slf4j+logback切换成slf4j+log4j,那么首先需要在原始的配置中将logback依赖和替换log4j的依赖排除掉
SpringBoot系列大全(二)SpringBoot日志的使用_第4张图片

接着
SpringBoot系列大全(二)SpringBoot日志的使用_第5张图片

最后再创建一个log4j.properties日志配置文件即可

你可能感兴趣的:(SpringBoot系列)