feat: 增加traceId
原因
增加traceId
修改
增加traceId
This commit is contained in:
parent
13f75f41b7
commit
44d73ab360
@ -6,7 +6,7 @@ import org.slf4j.MDC;
|
||||
|
||||
@UtilityClass
|
||||
public class TraceUtils {
|
||||
public static final String TRACE_ID = "axzo-trace-id";
|
||||
public static final String TRACE_ID = "traceId";
|
||||
/**
|
||||
* 多设置一个key = TraceId, value为traceId的变量到MDC. 以兼容目前的logback-spring.xml的配置
|
||||
*/
|
||||
|
||||
@ -7,6 +7,7 @@ import cn.axzo.foundation.web.support.exception.AbstractExceptionHandler;
|
||||
import cn.axzo.foundation.web.support.interceptors.CallerAppInterceptor;
|
||||
import cn.axzo.foundation.web.support.interceptors.PrettyPrintInterceptor;
|
||||
import cn.axzo.foundation.web.support.interceptors.PrintVerboseInterceptor;
|
||||
import cn.axzo.foundation.web.support.interceptors.TraceInterceptor;
|
||||
import cn.axzo.foundation.web.support.resolvers.AxContextResolver;
|
||||
import cn.axzo.foundation.web.support.resolvers.CallerAppResolver;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@ -187,6 +188,7 @@ public class DefaultWebMvcConfig extends DelegatingWebMvcConfiguration implement
|
||||
registry.addInterceptor(new CorsInterceptor(corsProcessorType));
|
||||
registry.addInterceptor(new PrettyPrintInterceptor());
|
||||
registry.addInterceptor(new CallerAppInterceptor(appRuntime));
|
||||
registry.addInterceptor(new TraceInterceptor());
|
||||
|
||||
super.addInterceptors(registry);
|
||||
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package cn.axzo.foundation.web.support.interceptors;
|
||||
|
||||
import cn.axzo.foundation.util.TraceUtils;
|
||||
import com.google.common.base.Strings;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 在request上下文中添加 traceId
|
||||
*/
|
||||
public class TraceInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
String upstreamTraceId = request.getHeader(TraceUtils.TRACE_ID);
|
||||
if (!Strings.isNullOrEmpty(upstreamTraceId)) {
|
||||
// 优先使用上游的 traceId
|
||||
TraceUtils.putTraceId(upstreamTraceId);
|
||||
}
|
||||
|
||||
String traceId = TraceUtils.getOrCreateTraceId();
|
||||
request.setAttribute(TraceUtils.TRACE_ID_IN_MDC, traceId);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
TraceUtils.removeTraceId();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user