Spring Boot日志中缺失应用名称,是什么原因导致该问题?
Spring Boot日志缺失应用名称解决方案
你日志中[my-service-id]字段是链路追踪组件注入的服务名,并非Spring Boot原生默认日志字段,缺失该字段一般有三类原因,对应解决方法如下:
- 未引入链路追踪依赖
Spring Boot 2.x版本需引入Spring Cloud Sleuth依赖:
Spring Boot 3.x及以上版本Sleuth已弃用,需引入Micrometer Tracing依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency><dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency> - 未配置应用服务名
需在配置文件中显式声明服务名,application.yml配置示例:spring: application: name: my-service-idapplication.properties配置示例:spring.application.name=my-service-id - 自定义日志格式未包含服务名字段
如果你手动修改过日志输出pattern,需要在pattern中补充MDC变量占位符才能读取服务名,参考日志pattern配置:
其中%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%X{spring.application.name:}] %pid --- [%t] %-40.40logger{39} : %m%n%wEx%X{spring.application.name:}用于读取MDC上下文存储的服务名,冒号后为取值失败时的默认空值。
内容的提问来源于stack exchange,提问作者Varshini
相关产品推荐
相关产品推荐

