当前位置:   article > 正文

Spring Boot项目启动过程中为什么日志打印没有显示完整包名呢?

Spring Boot项目启动过程中为什么日志打印没有显示完整包名呢?

一、前言

不知道大家注意过没有,在Spring Boot项目启动过程中日志打印并没有显示完整的报名,而是显示一些o.a.co.s.web形式的包名,如下图:

在这里插入图片描述

这是为什么呢?

二、原理

首先,我们先看一下Spring Boot项目中默认的日志格式配置。

找到spring-boot包,找到org/springframework/boot/logging/logback/defaults.xml文件,查看管控端日志输出格式的配置CONSOLE_LOG_PATTERN内容:

<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  • 1

Logback常用的pattern日志格式占位符说明网上说明有很多,这里我们不再赘述,主要关注一下%-40.40logger{39}%logger用于输出日志事件的类的全限定类名,%-40.40logger{39}就有点特殊了,它表示输出最多39个字符的日志记录器名称,如果超过则在左侧截断以保证总长度不超过40个字符。

三、扩展

知道原理以后,我们想启动日志显示完整包名就知道该怎么做了,只需要覆盖默认的CONSOLE_LOG_PATTERN日志格式就行了。

通过在application.yaml配置文件中配置logging.pattern.console属性进行日志格式覆盖:

logging:
  pattern:
    console: '${CONSOLE_LOG_PATTERN:%clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(${PID: }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}}'
  • 1
  • 2
  • 3

重新启动,发现日志打印时全限定类名已经可以完整显示了:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/346752
推荐阅读
相关标签
  

闽ICP备14008679号