From 7f9f0adab918b7bd0b664b4644eeb2afc388655c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 6 Jun 2025 22:36:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20request=5Fid=20/=20trace?= =?UTF-8?q?=5Fid=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhangdeman/filter/RequestInitFilter.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java index 1212b0f..c2c3a4f 100644 --- a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java +++ b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java @@ -17,10 +17,11 @@ import jakarta.servlet.http.HttpServletResponse; import org.springframework.core.annotation.Order; import java.io.IOException; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; // 初始化请求 @@ -119,6 +120,21 @@ public class RequestInitFilter extends HttpFilter { // 设置请求ID private void setRequestId(RuntimeContext runtimeContext) { + String traceId = runtimeContext.getHttpServletRequest().getHeader("X-Front-Trace-Id"); + List list = new ArrayList<>(); + Instant instant = Instant.ofEpochMilli(runtimeContext.getStartTimeStamp()); + ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault()); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String formatted = zdt.format(formatter); + list.add(runtimeContext.getServerIp()); // 服务器IP + list.add(formatted); // 请求时间 + list.add(UUID.randomUUID().toString()); // 随机字符串 + String requestId = String.join("-", list); // 拼接成请求ID + if (null == traceId || traceId.isEmpty()) { + traceId = requestId; + } + runtimeContext.setRequestId(requestId); + runtimeContext.setTraceId(traceId); } }