【笔记】SpringBoot在yml中配置日志格式

本文介绍如何在Spring Boot中配置日志以实现链路追踪。通过修改logging.pattern设置,在日志中加入log_id字段,便于跟踪从请求到响应的完整过程。提供了一个简单的MDC实例进行验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实际上spring boot默认的日志格式(logging.pattern)可以满足大部分场景,但有些场景需要做日志的链路追踪,所以我们就需要在日志文件中,打印特定的“日志ID”来满足这个场景。
(比如在接收到请求的时候,put一个日志ID,这样从请求到响应的完整流程日志,都可以通过这一个日志ID过滤出来)
想要在日志中打印log_id,就需要修改pattern。
但是如果引入logback.xml,就会破坏spring boot原本的日志切割+日志压缩功能(虽然手写一个脚本也不难),所以直接在yml中修改“logging.pattern”的配置,成本最低且最有效。
logging:
  pattern:
    #日志格式
    console: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) - %clr([%t]){faint} %X{log_id} %clr(%logger{39}){cyan} %clr(:){faint} %m%n%wEx"
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p - [%t] %X{log_id} %logger{39} : %m%n%wEx"
↑↑↑ 这里的pattern是完全基于spring boot默认格式,做了一点点修改,仅仅是加入了“%X{log_id}”而已。
注意console和file的不同,就是console有高亮配置,file没有。
MDC实例
for (int i = 0; i < 5; i++) {
    new Thread(() -> {
        MDC.put("log_id", IdUtil.objectId());
        log.debug("线程测试 threadId: {}", Thread.currentThread().getId());
        MDC.remove("log_id");
    }).start();
}
↑↑↑ 这个demo就能检验出我们配置的log_id是否生效了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值