SpringBoot 如何快速过滤出一次请求的所有日志

在现网出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位 。如果请求只在一个线程里处理,则我们可以通过线程ID来过滤 日志 ,但如果请求包含异步线程的处理,那么光靠线程ID就显得捉襟见肘了。

SLF4J日志框架提供了一个MDC(Mapped Diagnostic Contexts)工具类,谷歌翻译为映射的诊断上下文 ,从字面上很难理解,我们可以先实战一把。

public class Main {

    private static final String KEY = "requestId";
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    
    public static void main(String[] args) {

        // 入口传入请求ID
        MDC.put(KEY, UUID.randomUUID().toString());
        
        // 打印日志
        logger.debug("log in main thread 1");
        logger.debug("log in main thread 2");
        logger.debug("log in main thread 3");

        // 出口移除请求ID
        MDC.remove(KEY);

    }

}

我们在main函数的入口调用MDC.put()方法传入请求ID,在出口调用MDC.remove()方法移除请求ID。配置好log4j2.xml

相关推荐

  1. SpringBoot 如何快速过滤请求所有

    2024-03-16 11:36:06       18 阅读
  2. SpringBoot 如何快速过滤请求所有日志?

    2024-03-16 11:36:06       19 阅读
  3. 如何记录游戏开发过程

    2024-03-16 11:36:06       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-16 11:36:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-16 11:36:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-16 11:36:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-16 11:36:06       18 阅读

热门阅读

  1. 二维数组_矩阵交换行

    2024-03-16 11:36:06       15 阅读
  2. 第八章、设计模式

    2024-03-16 11:36:06       19 阅读
  3. Python keyword-only参数

    2024-03-16 11:36:06       17 阅读
  4. python pytest 最简单的接口自动化测试框架

    2024-03-16 11:36:06       17 阅读
  5. ISCE2StaMPS全流程

    2024-03-16 11:36:06       14 阅读
  6. AutoMapper12.0.1 扩展方法封装

    2024-03-16 11:36:06       19 阅读
  7. RabbitMq多数据源配置

    2024-03-16 11:36:06       18 阅读
  8. 开发K8S Operator

    2024-03-16 11:36:06       18 阅读
  9. LeetCode 174.地下城游戏 Python题解

    2024-03-16 11:36:06       20 阅读