91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在web應用程序中如何傳MDC的值

發布時間:2022-03-19 13:54:56 來源:億速云 閱讀:250 作者:小新 欄目:web開發

這篇文章主要介紹在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的值”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永城市| 济南市| 崇阳县| 介休市| 南涧| 无为县| 寿宁县| 旬邑县| 固始县| 花莲市| 嫩江县| 南雄市| 崇文区| 湖北省| 成都市| 崇礼县| 盐山县| 浮山县| 六安市| 交口县| 宁晋县| 莎车县| 弥渡县| 津市市| 延寿县| 南平市| 邯郸市| 洛浦县| 永福县| 彩票| 蒙自县| 新蔡县| 深州市| 綦江县| 枞阳县| 历史| 东方市| 江西省| 柳江县| 新疆| 外汇|