没有合适的资源?快使用搜索试试~ 我知道了~
[] - 2023-01-03 SpringBoot + MDC 实现全链路调用日志跟踪.pdf
需积分: 0 0 下载量 51 浏览量
2023-12-11
21:37:25
上传
评论
收藏 629KB PDF 举报
温馨提示
试读
15页
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能
资源推荐
资源详情
资源评论
SpringBoot + MDC 实现全链路调用日志跟踪
2023-01-03原文
点击关注公众号,Java干货及时送达👇
来 源 : h t t p s : / / j u e j i n . c n / p o s t / 6 8 4 4 9 0 4 1 0 1 4 8 3 0 2 0 2 9 5
写在前面
通 过 本 文 将 了 解 到 什 么 是 M D C 、 M D C 应 用 中 存 在 的 问 题 、 如 何
解 决 存 在 的 问 题
MDC介绍
简介:
M D C ( M a p p e d D i a g n o s t i c C o n t e x t , 映 射 调 试 上 下 文 ) 是
l o g 4 j 、 l o g b a c k 及 l o g 4 j 2
提 供 的 一 种 方 便 在 多 线 程 条 件 下 记 录 日 志 的 功 能 。 M D C
可 以 看 成 是 一 个 与 当 前 线 程 绑 定 的 哈 希 表 , 可 以 往 其 中 添 加 键
值 对 。 M D C
中 包 含 的 内 容 可 以 被 同 一 线 程 中 执 行 的 代 码 所 访 问 。 当 前 线 程
的 子 线 程 会 继 承 其 父 线 程 中 的 M D C
的 内 容 。 当 需 要 记 录 日 志 时 , 只 需 要 从 M D C
中 获 取 所 需 的 信 息 即 可 。 M D C
的 内 容 则 由 程 序 在 适 当 的 时 候 保 存 进 去 。 对 于 一 个 W e b
应 用 来 说 , 通 常 是 在 请 求 被 处 理 的 最 开 始 保 存 这 些 数 据
API说明:
clear() => 移除所有MDC
get (String key) => 获取当前线程MDC中指定key的值
getContext() => 获取当前线程MDC的MDC
put(String key, Object o) => 往当前线程的MDC中存入指定的键值对
remove(String key) => 删除当前线程MDC中指定的键值对
优点:
代码简洁,日志风格统一,不需要在log打印中手动拼写traceId,即LOGGE
R.info("traceId:{} ", traceId)
暂 时 只 能 想 到 这 一 点
MDC使用
添 加 拦 截 器
public class LogInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpSer
vletResponse response, Object handler) throws Exception {
//
如果有上层调用就用上层的
ID
String traceId = request.getHeader(Constants.TRACE_ID);
if (traceId == null) {
traceId = TraceIdUtil.getTraceId();
}
MDC.put(Constants.TRACE_ID, traceId);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServl
etResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, Http
ServletResponse response, Object handler, Exception ex)
throws Exception {
//
调用结束后删除
MDC.remove(Constants.TRACE_ID);
}
}
复制代码
修 改 日 志 格 式
<property name="pattern">[TRACEID:%X{traceId}] %d{HH:mm:ss.SSS}
%-5level %class{-1}.%M()/%L - %msg%xEx%n</property>
复制代码
重 点 是 % X { t r a c e I d } , t r a c e I d 和 M D C 中 的 键 名 称 一 致
简 单 使 用 就 这 么 容 易 , 但 是 在 有 些 情 况 下 t r a c e I d 将 获 取 不
到
剩余14页未读,继续阅读
资源评论
毕业小助手
- 粉丝: 1952
- 资源: 1712
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功