Kaynağa Gözat

加入请求头信息

java110 4 yıl önce
ebeveyn
işleme
cd8eec9404

+ 43 - 0
java110-bean/src/main/java/com/java110/dto/trace/TraceParamDto.java

@@ -0,0 +1,43 @@
+package com.java110.dto.trace;
+
+import java.io.Serializable;
+
+public class TraceParamDto implements Serializable {
+
+    private String  reqHeader;
+    private String  resHeader;
+    private String  reqParam;
+    private String  resParam;
+
+    public String getReqHeader() {
+        return reqHeader;
+    }
+
+    public void setReqHeader(String reqHeader) {
+        this.reqHeader = reqHeader;
+    }
+
+    public String getResHeader() {
+        return resHeader;
+    }
+
+    public void setResHeader(String resHeader) {
+        this.resHeader = resHeader;
+    }
+
+    public String getReqParam() {
+        return reqParam;
+    }
+
+    public void setReqParam(String reqParam) {
+        this.reqParam = reqParam;
+    }
+
+    public String getResParam() {
+        return resParam;
+    }
+
+    public void setResParam(String resParam) {
+        this.resParam = resParam;
+    }
+}

+ 10 - 4
java110-core/src/main/java/com/java110/core/trace/Java110TraceFactory.java

@@ -6,6 +6,7 @@ import com.java110.core.log.LoggerFactory;
 import com.java110.dto.trace.TraceAnnotationsDto;
 import com.java110.dto.trace.TraceDto;
 import com.java110.dto.trace.TraceEndpointDto;
+import com.java110.dto.trace.TraceParamDto;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.kafka.KafkaFactory;
@@ -95,12 +96,12 @@ public class Java110TraceFactory {
         return threadLocal.get();
     }
 
-    public static String createTrace(String name, Map<String, Object> headers) {
+    public static String createTrace(String name, Map<String, Object> headers, String reqData) {
         String traceId = "";
         String parentId = "";
         if (headers.containsKey(CommonConstant.TRACE_ID)) { //先取trace Id
             traceId = headers.get(CommonConstant.TRACE_ID).toString();
-        }else if (headers.containsKey(CommonConstant.TRANSACTION_ID)) {
+        } else if (headers.containsKey(CommonConstant.TRANSACTION_ID)) {
             traceId = headers.get(CommonConstant.TRANSACTION_ID).toString();
         } else {
             traceId = GenerateCodeFactory.getUUID();
@@ -110,11 +111,11 @@ public class Java110TraceFactory {
         } else {
             parentId = "0";
         }
-        return createTrace(name, traceId, parentId, TraceAnnotationsDto.VALUE_CLIENT_SEND);
+        return createTrace(name, traceId, parentId, TraceAnnotationsDto.VALUE_CLIENT_SEND, JSONObject.toJSONString(headers), reqData);
     }
 
 
-    public static String createTrace(String name, String traceId, String parentId, String event) {
+    public static String createTrace(String name, String traceId, String parentId, String event, String reqHeader, String reqData) {
         //全局事务开启者
         TraceDto traceDto = new TraceDto();
         traceDto.setId(GenerateCodeFactory.getUUID());
@@ -145,6 +146,11 @@ public class Java110TraceFactory {
         traceAnnotationsDtos.add(traceAnnotationsDto);
         traceDto.setAnnotations(traceAnnotationsDtos);
         traceDto.setTraceId(traceId);
+
+        TraceParamDto traceParamDto = new TraceParamDto();
+        traceParamDto.setReqHeader(reqHeader);
+        traceParamDto.setReqParam(reqData);
+
         put(traceDto.getId(), traceDto);
         putSpanId(SPAN_ID, traceDto.getId());
         return traceDto.getId();

+ 42 - 1
java110-core/src/main/java/com/java110/core/trace/Java110TraceHandlerInterceptor.java

@@ -1,5 +1,6 @@
 package com.java110.core.trace;
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.trace.TraceAnnotationsDto;
 import org.slf4j.Logger;
@@ -8,6 +9,9 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +37,7 @@ public class Java110TraceHandlerInterceptor extends HandlerInterceptorAdapter {
             headers.put(headerName.toLowerCase(), request.getHeader(headerName));
         }
         //调用链logSwatch
-        Java110TraceFactory.createTrace(url, headers);
+        Java110TraceFactory.createTrace(url, headers,getReqData(request));
         return true;
     }
 
@@ -42,6 +46,43 @@ public class Java110TraceHandlerInterceptor extends HandlerInterceptorAdapter {
     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
         logger.debug("完成拦截器Java110TraceHandlerInterceptor>>afterCompletion");
         Java110TraceFactory.putAnnotations(TraceAnnotationsDto.VALUE_CLIENT_RECEIVE);
+
+        //response.getOutputStream();
+
+    }
+
+    public String getReqData(HttpServletRequest request) throws Exception{
+        String reqData = "";
+        if ("POST,PUT".contains(request.getMethod())) {
+            InputStream in = request.getInputStream();
+            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+            //reader.
+            StringBuffer sb = new StringBuffer();
+            String str = "";
+            while ((str = reader.readLine()) != null) {
+                sb.append(str);
+            }
+            reqData = sb.toString();
+        } else {
+            Map<String, String[]> params = request.getParameterMap();
+            if (params != null && !params.isEmpty()) {
+                JSONObject paramObj = new JSONObject();
+                for (String key : params.keySet()) {
+                    if (params.get(key).length > 0) {
+                        String value = "";
+                        for (int paramIndex = 0; paramIndex < params.get(key).length; paramIndex++) {
+                            value += (params.get(key)[paramIndex] + ",");
+                        }
+                        value = value.endsWith(",") ? value.substring(0, value.length() - 1) : value;
+                        paramObj.put(key, value);
+                    }
+                    continue;
+                }
+                reqData = paramObj.toJSONString();
+            }
+        }
+
+        return reqData;
     }