• SpringBoot+MDC实现全链路调用日志跟踪


    在前面写的一篇文章中,热心网友【地藏Kelvin】评论说在多线程中还是有可能会乱掉,建议通过MDC打印traceId来个全链路调用跟踪。掘金里个个都是人才,说话又好听,超喜欢在里面。掘金使我进步,热心网友总能提出改进意见

    写在前面

    通过本文将了解到什么是MDC、MDC应用中存在的问题、如何解决存在的问题

    MDC介绍

    简介:

    MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据

    API说明:
    • clear() => 移除所有MDC
    • get (String key) => 获取当前线程MDC中指定key的值
    • getContext() => 获取当前线程MDC的MDC
    • put(String key, Object o) => 往当前线程的MDC中存入指定的键值对
    • remove(String key) => 删除当前线程MDC中指定的键值对
    优点:
    • 代码简洁,日志风格统一,不需要在log打印中手动拼写traceId,即LOGGER.info("traceId:{} ", traceId)

    暂时只能想到这一点

    MDC使用

    • 添加拦截器



    作者:何甜甜在吗
    链接:https://www.jianshu.com/p/1e5aa59abef6
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    uploadify上传文件代码
    事务处理拼接sql语句对数据库的操作.异常回滚
    Scrum【转】
    Redis
    mybatis
    Spring MVC
    IOC的理解(转载)
    spring IOC与AOP
    git
    python基础2
  • 原文地址:https://www.cnblogs.com/tiancai/p/15946067.html
Copyright © 2020-2023  润新知