返回顶部
首页 > 资讯 > 前端开发 > JavaScript >在web应用程序中如何传MDC的值
  • 293
分享到

在web应用程序中如何传MDC的值

2024-04-02 19:04:59 293人浏览 安东尼
摘要

这篇文章主要介绍在WEB应用程序中如何传MDC的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!传MDC的值MDC(Mapped Diagnostic Context)通常用于存储单

这篇文章主要介绍在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的值”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: 在web应用程序中如何传MDC的值

本文链接: https://lsjlt.com/news/94696.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在web应用程序中如何传MDC的值
    这篇文章主要介绍在web应用程序中如何传MDC的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!传MDC的值MDC(Mapped Diagnostic Context)通常用于存储单...
    99+
    2024-04-02
  • 如何在Zabbix中监控Web应用程序
    要在Zabbix中监控Web应用程序,您可以按照以下步骤操作: 安装Zabbix Agent:在要监控的Web应用程序所在的服务...
    99+
    2024-03-13
    Zabbix
  • 如何在C++中创建多租户Web应用程序?
    在 c++++ 中构建多租户 web 应用程序涉及将每个租户的数据隔离起来。这可以通过两种主要方法实现:使用容器(如无序映射)或使用范围隔离(限制变量的作用域)。容器方法在容器中存储每个...
    99+
    2024-05-11
    c++ 多租户 作用域 键值对
  • 如何在ASP.NET Web应用程序中使用NPM安装的模块?
    ASP.NET是一种常用的Web应用程序框架,它可以通过使用NPM来安装模块来扩展其功能。NPM是Node.js的包管理器,它允许您轻松地安装、更新和管理JavaScript库和工具。在本文中,我们将介绍如何在ASP.NET Web应用程序...
    99+
    2023-08-25
    npm 数组 api
  • Flutter中的Web应用程序开发:构建现代Web应用程序
    作者:禅与计算机程序设计艺术 Flutter 中的 Web 应用程序开发:构建现代 Web 应用程序 作为人工智能专家,程序员和软件架构师,CTO,我今天将为大家分享有关 Flutter 中 Web...
    99+
    2023-09-23
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • 如何在 Linux 上使用 ASP 构建 Web 应用程序?
    在 Linux 上使用 ASP 构建 Web 应用程序是一项非常实用的技能,它能够帮助开发者快速构建高效的 Web 应用程序。下面我们将详细介绍如何在 Linux 上使用 ASP 构建 Web 应用程序。 一、准备工作 在开始之前,我们需要...
    99+
    2023-06-21
    npm javascript linux
  • NumPy和ASP.NET Core:如何在Web应用程序中使用二维码?
    在现代的Web应用程序中,使用二维码成为了一种普遍的方式,可以帮助用户快速地获取相关信息,例如产品信息、活动详情等等。在本篇文章中,我们将介绍如何使用NumPy和ASP.NET Core创建一个简单的Web应用程序,并在其中使用二维码。 ...
    99+
    2023-08-26
    numy 二维码 numpy
  • 怎么在Go中构建Web应用程序
    本篇内容介绍了“怎么在Go中构建Web应用程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开始在开始之前,您需要准备好以下几点:已安装Go...
    99+
    2023-07-05
  • 如何在 Laravel 中使用 ASP 存储来优化您的 web 应用程序?
    Laravel 是一个非常流行的 PHP 框架,它为开发人员提供了许多便利的功能和工具来创建高质量的 web 应用程序。ASP 存储是一种用于存储和管理应用程序数据的解决方案,它可以帮助您优化您的 Laravel 应用程序。在本文中,我们将...
    99+
    2023-07-05
    存储 laravel shell
  • Java应用程序中的按值传递语义是什么
    这篇文章给大家介绍Java应用程序中的按值传递语义是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java 应用程序中的按值传递语义 节选理解参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的...
    99+
    2023-06-03
  • 微信小程序-web-View使用以及跟小程序的通信传值
    一、web-view是什么? 简单来说 就是小程序嵌套H5页面 web-view 官网地址 二、如何使用web-view 1.在小程序创建一个页面,专门用来显示H5 不需要在这个页面做修饰,H5页面会自动铺满 bindmessage属性用来...
    99+
    2023-08-16
    前端 微信小程序 小程序
  • Java Web Start如何部署应用程序
    这篇文章将为大家详细讲解有关Java Web Start如何部署应用程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java web Start 是部署基于 JavaTM 技术的应用程序的一种新技术。它...
    99+
    2023-06-03
  • 如何使用golang搭建web应用程序
    近年来,Go语言(简称golang)因其高效、简洁、并发安全等特点,逐渐成为了Web开发领域的宠儿。Golang易于学习和使用,并且拥有庞大的基础库和框架。本文将介绍如何使用golang搭建web应用程序,包括路由设置、模板处理、ORM等内...
    99+
    2023-05-14
  • 如何使用 PHP 部署 Web 应用程序?
    为了部署 php web 应用程序,需要遵循以下步骤:设置代码库,包括 php 文件和必需文件。配置 web 服务器(如 apache 或 nginx): a. apache:添加 .h...
    99+
    2024-04-20
    web php mysql docker apache nginx access
  • 如何在php中实现对象传值与引用传值
    今天就跟大家聊聊有关如何在php中实现对象传值与引用传值,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。变量赋值与对象赋值对比<php   //&n...
    99+
    2023-06-06
  • 如何在Linux上使用ASP和Django开发Web应用程序?
    在Linux操作系统上,ASP和Django是两个非常流行的Web应用程序开发框架。在本文中,我们将探讨如何在Linux上使用这两个框架来开发Web应用程序。 ASP是一种Microsoft开发的Web应用程序框架,它允许使用VBScrip...
    99+
    2023-09-20
    django linux 文件
  • 什么是API?如何在PHP中使用它来构建Web应用程序?
    API,全称应用程序编程接口(Application Programming Interface),是一种用于不同应用程序之间通信的方式。通过API,应用程序可以相互之间共享数据和功能,从而实现更高效、更灵活的开发和应用。在Web应用程序开...
    99+
    2023-06-06
    api shell numpy
  • Laravel响应和ASP异步编程:如何在Web应用中实现高效的数据传输?
    Web应用程序的性能对于用户体验和业务成功至关重要。在Web应用程序中,数据传输是最常见的任务之一。为了实现高效的数据传输,我们可以使用一些常见的技术和框架,例如Laravel和ASP。在这篇文章中,我们将探讨如何使用Laravel响应和...
    99+
    2023-08-18
    异步编程 laravel 响应
  • Web应用程序的页面应该集中在一个模板中吗?
    编程网今天将给大家带来《Web应用程序的页面应该集中在一个模板中吗?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大...
    99+
    2024-04-05
  • 如何在 PHP 容器中使用 Django 索引来优化你的 Web 应用程序?
    Web 应用程序的优化是一个永恒的话题。在这个话题中,索引是一个非常重要的概念。索引可以使查询更快,减少数据库的负载,提高 Web 应用程序的响应速度。在本文中,我们将讨论如何在 PHP 容器中使用 Django 索引来优化你的 Web ...
    99+
    2023-10-10
    容器 django 索引
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作