wuwenyi 3 днів тому
батько
коміт
a224067ce9

+ 36 - 0
src/main/java/com/qqflow/engine/common/config/HttpLoggingInterceptor.java

@@ -0,0 +1,36 @@
+package com.qqflow.engine.common.config;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import java.util.stream.Collectors;
+
+/**
+ * HTTP 请求/响应日志拦截器:记录每个请求的 URI、参数和响应状态
+ */
+@Slf4j
+public class HttpLoggingInterceptor implements HandlerInterceptor {
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        String params = request.getParameterMap().isEmpty() ? ""
+                : "?" + request.getParameterMap().entrySet().stream()
+                    .map(e -> e.getKey() + "=" + String.join(",", e.getValue()))
+                    .collect(Collectors.joining("&"));
+        log.info("[HTTP] {} {}{} | ip={}", request.getMethod(), request.getRequestURI(), params, request.getRemoteAddr());
+        return true;
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
+                                Object handler, Exception ex) {
+        int status = response.getStatus();
+        if (status >= 400) {
+            log.warn("[HTTP] {} {} → {}", request.getMethod(), request.getRequestURI(), status);
+        } else {
+            log.info("[HTTP] {} {} → {}", request.getMethod(), request.getRequestURI(), status);
+        }
+    }
+}