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}}"/>

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. Spring Boot项目打包指定

    2024-03-31 23:02:03       48 阅读
  2. Spring:SpringBoot为什么可以使用Jar启动

    2024-03-31 23:02:03       7 阅读
  3. springboot项目启动打印全部接口方法

    2024-03-31 23:02:03       20 阅读
  4. SpringBoot项目 nohup启动运行日志过大问题

    2024-03-31 23:02:03       22 阅读
  5. linux nohup命令启动jar 如何取消nohup日志打印

    2024-03-31 23:02:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 23:02:03       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 23:02:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 23:02:03       4 阅读
  4. Python语言-面向对象

    2024-03-31 23:02:03       7 阅读

热门阅读

  1. css页面搭建案例

    2024-03-31 23:02:03       21 阅读
  2. 输入 wo xiang he ni jao peng you.,倒着打。

    2024-03-31 23:02:03       24 阅读
  3. NC20128 不重复数字

    2024-03-31 23:02:03       22 阅读
  4. ES6:Map()与WeakMap()

    2024-03-31 23:02:03       21 阅读
  5. 探索Vue脚手架:构建现代化Web应用的利器

    2024-03-31 23:02:03       22 阅读
  6. 网页的皮肤——css

    2024-03-31 23:02:03       23 阅读
  7. 【对图书的ISBN 号码进行识别处理】

    2024-03-31 23:02:03       24 阅读