From ed838e62602c0a63a64ff4bd144a0d16cc9a7cf8 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 10 四月 2026 09:39:25 +0800
Subject: [PATCH] 和客户同步1.0版本
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/log/RequestResponseLoggingFilter.java | 55 ++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 46 insertions(+), 9 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/log/RequestResponseLoggingFilter.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/log/RequestResponseLoggingFilter.java
index ff1a80b..aeee1bc 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/log/RequestResponseLoggingFilter.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/log/RequestResponseLoggingFilter.java
@@ -1,7 +1,9 @@
package com.xiaopeng.order.config.log;
+import com.xiaopeng.common.log.config.LogHeaderProperties;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.MediaType;
@@ -16,9 +18,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.*;
/**
* 请求/响应日志过滤器
@@ -28,6 +28,9 @@
@Component
@Order(Ordered.HIGHEST_PRECEDENCE + 10)
public class RequestResponseLoggingFilter extends OncePerRequestFilter {
+
+ @Autowired
+ private LogHeaderProperties logHeaderProperties;
/** 不打印 body 的路径前缀(健康检查、actuator 等) */
private static final Set<String> EXCLUDE_PATHS = new HashSet<>(Arrays.asList(
@@ -100,12 +103,46 @@
String method = request.getMethod();
String body = extractBody(request.getContentAsByteArray(), request.getContentType());
- log.info(">>> [{}] {} {}{} | body={}",
- traceId,
- method,
- uri,
- query != null ? "?" + query : "",
- body);
+ if (logHeaderProperties.isEnabled()) {
+ String headers = extractHeaders(request);
+ log.info(">>> [{}] {} {}{} | headers={} | body={}",
+ traceId, method, uri,
+ query != null ? "?" + query : "",
+ headers, body);
+ } else {
+ log.info(">>> [{}] {} {}{} | body={}",
+ traceId, method, uri,
+ query != null ? "?" + query : "",
+ body);
+ }
+ }
+
+ private String extractHeaders(HttpServletRequest request) {
+ List<String> names = logHeaderProperties.getNames();
+ StringBuilder sb = new StringBuilder("{");
+ boolean first = true;
+ if (names != null && !names.isEmpty()) {
+ // 只打印配置的请求头
+ for (String name : names) {
+ String value = request.getHeader(name);
+ if (value != null) {
+ if (!first) sb.append(", ");
+ first = false;
+ sb.append(name).append("=").append(value);
+ }
+ }
+ } else {
+ // 未配置则打印全部请求头
+ Enumeration<String> headerNames = request.getHeaderNames();
+ while (headerNames != null && headerNames.hasMoreElements()) {
+ String name = headerNames.nextElement();
+ String value = request.getHeader(name);
+ if (!first) sb.append(", ");
+ first = false;
+ sb.append(name).append("=").append(value);
+ }
+ }
+ return sb.append("}").toString();
}
private void logResponse(ContentCachingResponseWrapper response, long cost) {
--
Gitblit v1.7.1