在web应用程序中如何传MDC的值
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍在web应用程序中如何传MDC的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!传MDC的值MDC(Mapped Diagnostic Context)通常用于
千家信息网最后更新 2026年11月04日在web应用程序中如何传MDC的值
这篇文章主要介绍在web应用程序中如何传MDC的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
传MDC的值
MDC(Mapped Diagnostic Context)通常用于存储单个任务的特定值。例如,在web应用程序中,它可能为每个请求存储一个请求id和一个用户id,因此MDC查找与单个请求或整个用户活动相关的日志记录变得更加容易。
2017-08-27 14:38:30,893 INFO [server-thread-0] [requestId=060d8c7f, userId=2928ea66] c.g.s.web.Controller - Message.
可是如果代码的某些部分是在专用线程池中执行的,则线程(提交任务的线程)中MDC就不会被继续传值。在下面的示例中,第7行的日志中包含"requestId",而第9行的日志则没有:
@GET@Path("/genre/{name}")@Produces(MediaType.APPLICATION_JSON)public void getGenre(@PathParam("name") String genreName, @Suspended AsyncResponse response) { try (MDC.MDCCloseable ignored = MDC.putCloseable("requestId", UUID.randomUUID().toString())) { String genreId = getGenreIdbyName(genreName); //Sync call logger.trace("Submitting task to find genre with id '{}'.", genreId); //'requestId' is logged executorService.submit(() -> { logger.trace("Starting task to find genre with id '{}'.", genreId); //'requestId' is not logged Response result = getGenre(genreId) //Async call .map(artist -> Response.ok(artist).build()) .orElseGet(() -> Response.status(Response.Status.NOT_FOUND).build()); response.resume(result); } ); }}这可以通过MDC#getCopyOfContextMap()方法来解决:
...public void getGenre(@PathParam("name") String genreName, @Suspended AsyncResponse response) { try (MDC.MDCCloseable ignored = MDC.putCloseable("requestId", UUID.randomUUID().toString())) { ... logger.trace("Submitting task to find genre with id '{}'.", genreId); //'requestId' is logged withCopyingMdc(executorService, () -> { logger.trace("Starting task to find genre with id '{}'.", genreId); //'requestId' is logged ... }); }}private void withCopyingMdc(ExecutorService executorService, Runnable function) { Map以上是"在web应用程序中如何传MDC的值"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
应用程序
程序
应用
日志
线程
任务
内容
单个
用户
篇文章
存储
代码
价值
兴趣
可以通过
小伙
小伙伴
方法
是在
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技活动banner
互联网的科技
互联网最新的科技有限公司
美国互联网科技
互联网科技作文
嘟嘟瓜互联网科技
远信互联网科技
极限挑战互联网科技
南京欣网互联网科技
成都互联网科技公司100强
互联网科技商业
明优互联网科技有限公司
互联网科技公司营业执照怎么办理
互联网金融科技公司的优势
上海钢联属于互联网科技股吗
广州百诚互联网科技有限公司官网
工业互联网科技创业
广西科技产业互联网是什么
第三届互联网大会安防黑科技
如何强化互联网金融科技
广州万易互联网科技有限公司
新华互联网科技学校
互联网金融科技创新
北京禾田雨橡互联网科技
顺玮阁互联网科技
成都狮子座互联网科技
厦门千工互联网科技有限公司
华夏恒生科技与互联网科技
世界互联网科技成果奖
黑龙江互联网科技公司