天天看点

Spring Boot 进阶- Spring Boot日志框架介绍

作者:架构师面试宝典
Spring Boot 进阶- Spring Boot日志框架介绍

在学习Spring Boot日志框架之前,首先我们需要掌握日志框架都有什么,怎么用?如何用等问题,下面我们就来带着这些问题来看Spring Boot 日志框架相关的内容吧。

日志框架有那些?

在开发中我们经常用到的日志框架有log4j、logback、log4j2等等。其中log4j是又是我们在开发过程中经常听到的一个日志框架。因为在Spring 框架中使用的就是log4j框架,但是现在log4j官方已经不太维护了,在性能方面相比于logback、log4j2也略有逊色。

Spring Boot 进阶- Spring Boot日志框架介绍

logback是log4j的开发者重新设计开发的另外的一套开源的日志框架,相比于log4j来说性能也提升了很多。作为Spring Boot框架的默认日志框架在各种性能上有着不小的优势。

log4j2相当于logback来说出现较晚,在官方的性能介绍中要比logback好,但是没有再具体的高级项目中大面积的使用过。log4j2在很多的设计理念上与logback是类似的。虽然作为Apache的官方项目,但在Spring等相关框架中也没有得到太多的使用。

那么既然日志框架有很多,如何能在项目中选择适合项目开发的框架也就无可厚非了。对于普通开发者来讲虽然不需要掌握太多的关于日志框架底层的东西,但是只是我们需要了解日志框架都有哪些,这样有利于在开发中更好的选择合适的日志框架。

Spring Boot中的日志框架

在Spring Boot中 默认使用的日志框架是logback。使用logback作为Spring Boot框架的默认日志框架,一定是因为logback是经受住了很多项目开发的考验的,所以建议在一般的开发中不要随意的更换日志框架。由于是默认引入的日志框架,所以这里我们不需要在POM文件中添加对应的依赖。

下面我们来看一下在IDEA中输出的日志,默认是INFO级别的日志。

Spring Boot 进阶- Spring Boot日志框架介绍

如图所示,在Console日志中输出的内容有如下一些

  • 日期时间:精确到了毫秒级别
  • 日志的级别:ERROR、WARN、INFO、DEBUG、TRACE
  • 所属进程ID号
  • 日志分割符:通常是中划线表示日志的开始
  • 日志所属线程名:使用中括号括起来
  • 日志名:一般是类名路径
  • 输出日志内容

Spring Boot项目中如何使用日志

在实际业务开发中,为了能获取到各种代码执行信息,就需要使用到日志追溯对应的操作。在代码中使用日志的方式有两种

一种是比较传统的日志注入方式,就是在每个类中引入私有的日志输出的入口代码。如下所示

private final Logger log = LoggerFactory.getLogger(PropertiesController.class);           

这种方式在之前的开发中,是经常会被使用到的,比较麻烦,需要在每个类中添加这样一段代码。

使用logback

首先需要在pom文件中引入对应的依赖。

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
     </dependency>           

在使用的时候只需要在类上加上一个@Slf4j 的注解就可以了,代码如下

@Slf4j
public class LogFramework {

    public void testLog(){
        log.info("输出INFO日志");
    }
}
           

如何设置日志级别

在实际开发中我们经常会用到的几种日志级别从低到高分别是:TRACE<DEBUG<INFO<WARN<ERROR<FATAL。

这里需要说明的是在日志框架中输出的日志级别支持只有如下一些

@Slf4j
public class LogFramework {

    public void testLog(){
        log.trace("输出TRACE日志级别");
        log.debug("输出DEBUG日志级别");
        log.info("输出INFO日志级别");
        log.warn("输出WARN日志级别");
        log.error("输出ERROR日志级别");
    }
}           

如果在日志级别中设置了其中的一个级别,那么比他级别更低级别的日志将不会显示。

Spring Boot 进阶- Spring Boot日志框架介绍

如图所示,在Spring Boot中默认日志级别是INFO级别的日志,所以在日志输出的时候只有INFO级别及以上的日志被输出了。

那么我们怎么控制日志级别的输出呢?在之前我们提到过Spring Boot是允许通过配置来修改自动配置项的,所以我们只需要在配置文件中添加如下的内容就可以调整日志级别了。

logging:
  level:
    root: debug           

通过上面的配置可以将所有的日志级别都调整成了DEBUG,当然Spring Boot 也支持修改package级别的日志调整,格式如下,

logging:
  level:
    com.example.demo: debug
           

完成上面的配置就只是把demo包下的所有日志操作改成debug级别了。

Spring Boot 进阶- Spring Boot日志框架介绍

经过测试之后,会发现与我们描述的是一样的,打印出来的日志级别也发生了变化。

总结

这篇文章中,我们介绍了Spring Boot框架中如何使用日志,以及关于使用日志的一些注意事项。了解关于日志级别调整的配置。但是这些都是默认配置,那么我们如何自定义日志的输出路径,以及自定义日志的输出格式呢?下一篇文章我们来一起研究关于如何自定义日志输出

继续阅读