增加 request_id / trace_id生成

This commit is contained in:
白茶清欢 2025-06-06 22:36:42 +08:00
parent b48a8a61e0
commit 7f9f0adab9

View File

@ -17,10 +17,11 @@ import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.time.Instant;
import java.util.Enumeration; import java.time.ZoneId;
import java.util.HashMap; import java.time.ZonedDateTime;
import java.util.Map; import java.time.format.DateTimeFormatter;
import java.util.*;
// 初始化请求 // 初始化请求
@ -119,6 +120,21 @@ public class RequestInitFilter extends HttpFilter {
// 设置请求ID // 设置请求ID
private void setRequestId(RuntimeContext runtimeContext) { private void setRequestId(RuntimeContext runtimeContext) {
String traceId = runtimeContext.getHttpServletRequest().getHeader("X-Front-Trace-Id");
List<String> 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);
} }
} }