feat(common): 新脚手架,兼容一下 ctxLogId 这个traceId

This commit is contained in:
周敏 2025-01-08 16:58:06 +08:00
parent dcd4bd7412
commit 18e2230439
2 changed files with 14 additions and 3 deletions

View File

@ -2,6 +2,7 @@ package cn.axzo.foundation.util;
import com.google.common.base.Strings;
import lombok.experimental.UtilityClass;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC;
@UtilityClass
@ -12,27 +13,35 @@ public class TraceUtils {
*/
public static final String TRACE_ID_IN_MDC = "TraceId";
/**
* 老服务用的是 ctxLogId这里兼容一下老服务
*/
public static final String TRACE_ID_CTX_LOG_ID = "ctxLogId";
public String getOrCreateTraceId() {
String res = MDC.get(TRACE_ID);
String res = getTraceId();
if (Strings.isNullOrEmpty(res)) {
res = UUIDBuilder.generateShortUuid();
MDC.put(TRACE_ID, res);
MDC.put(TRACE_ID_IN_MDC, res);
MDC.put(TRACE_ID_CTX_LOG_ID, res);
}
return res;
}
public String getTraceId() {
return MDC.get(TRACE_ID);
return StringUtils.firstNonBlank(MDC.get(TRACE_ID_CTX_LOG_ID), MDC.get(TRACE_ID));
}
public void putTraceId(String traceId) {
MDC.put(TRACE_ID, traceId);
MDC.put(TRACE_ID_IN_MDC, traceId);
MDC.put(TRACE_ID_CTX_LOG_ID, traceId);
}
public void removeTraceId() {
MDC.remove(TRACE_ID);
MDC.remove(TRACE_ID_IN_MDC);
MDC.remove(TRACE_ID_CTX_LOG_ID);
}
}

View File

@ -2,6 +2,7 @@ package cn.axzo.foundation.web.support.interceptors;
import cn.axzo.foundation.util.TraceUtils;
import com.google.common.base.Strings;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
@ -14,7 +15,7 @@ public class TraceInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String upstreamTraceId = request.getHeader(TraceUtils.TRACE_ID);
String upstreamTraceId = StringUtils.firstNonBlank(request.getHeader(TraceUtils.TRACE_ID_CTX_LOG_ID), request.getHeader(TraceUtils.TRACE_ID));
if (!Strings.isNullOrEmpty(upstreamTraceId)) {
// 优先使用上游的 traceId
TraceUtils.putTraceId(upstreamTraceId);
@ -22,6 +23,7 @@ public class TraceInterceptor implements HandlerInterceptor {
String traceId = TraceUtils.getOrCreateTraceId();
request.setAttribute(TraceUtils.TRACE_ID_IN_MDC, traceId);
request.setAttribute(TraceUtils.TRACE_ID_CTX_LOG_ID, traceId);
return true;
}