add - 添加 traceId 的集成

This commit is contained in:
wangli 2024-02-19 16:25:34 +08:00
parent 60573b204c
commit 4460da42c4

View File

@ -0,0 +1,59 @@
package cn.axzo.workflow.server.common.filter;
import cn.azxo.framework.common.constatns.Constants;
import com.google.common.base.Strings;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
import org.slf4j.MDC;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.UUID;
/**
* Http接口日志记录
*
* @author wangli
* @since 2024/2/19 16:23
*/
@Slf4j
@Component
public class HttpTraceLogFilter extends OncePerRequestFilter implements Ordered {
private static final String X_REQUEST_ID = "x-request-id";
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
@Override
@Trace(operationName = "HttpTraceLogFilter")
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
String requestId = request.getHeader(X_REQUEST_ID);
if (Strings.isNullOrEmpty(requestId)) {
MDC.put(X_REQUEST_ID, getTraceId());
} else {
MDC.put(X_REQUEST_ID, requestId);
}
String ctxLogId = request.getHeader(Constants.CTX_LOG_ID_MDC);
if (Strings.isNullOrEmpty(ctxLogId)) {
MDC.put(Constants.CTX_LOG_ID_MDC, getTraceId());
} else {
MDC.put(Constants.CTX_LOG_ID_MDC, ctxLogId);
}
}
private String getTraceId() {
String contextTraceId = TraceContext.traceId();
return Strings.isNullOrEmpty(contextTraceId)
? UUID.randomUUID().toString().replaceAll("-", "") : contextTraceId;
}
}