From 9479071042b204263f26bbf38f45f265fb60e90c Mon Sep 17 00:00:00 2001 From: xujun Date: Fri, 22 May 2026 14:07:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E5=8E=9Fhttp=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=87=87=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/common/log/filter/HttpLogFilter.java | 73 ++++++++----------- 1 file changed, 31 insertions(+), 42 deletions(-) diff --git a/xtools-app-common/xtools-app-common-log/xtools-app-common-log-filter/src/main/java/xtools/app/common/log/filter/HttpLogFilter.java b/xtools-app-common/xtools-app-common-log/xtools-app-common-log-filter/src/main/java/xtools/app/common/log/filter/HttpLogFilter.java index a383875..76d8d3e 100644 --- a/xtools-app-common/xtools-app-common-log/xtools-app-common-log-filter/src/main/java/xtools/app/common/log/filter/HttpLogFilter.java +++ b/xtools-app-common/xtools-app-common-log/xtools-app-common-log-filter/src/main/java/xtools/app/common/log/filter/HttpLogFilter.java @@ -108,53 +108,42 @@ public class HttpLogFilter extends BaseFilter implements Ordered, BaseParams { // 获取请求日志节点 LogTrack logTrack = LogTrackHolder.get(); - // 包装请求 + // 包装请求和响应 ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request, DEFAULT_CACHE_LIMIT); + ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response); - // 是否忽略响应体 + // 处理请求 + filterChain.doFilter(requestWrapper, responseWrapper); + + // 获取请求体数据 + requestLog.put("requestBody", getContent(requestWrapper.getContentAsByteArray())); + // 记录请求日志 + saveLog(logTrack, LogBusBaseType.HTTP_REQUEST, requestLog); + + // 获取响应头信息 + JSONObject responseHeaders = getResponseHeaders(responseWrapper); + // 获取响应体数据 + Object respData; if (PathPatternUtils.match(RESP_WHITE_LIST, uri)) { - // 处理请求 - if (!response.isCommitted()) { - filterChain.doFilter(requestWrapper, response); - } - // 获取请求体数据 - requestLog.put("requestBody", getContent(requestWrapper.getContentAsByteArray())); - // 记录请求日志 - saveLog(logTrack, LogBusBaseType.HTTP_REQUEST, requestLog); - // 停止计时 - sw.stop(); - // 保存日志 - JSONObject responseLog = JSONObject.of( - "headers", getResponseHeaders(response), - "responseBody", "ignore", - "execTime", sw.getTotalTimeMillis() - ); - saveLog(LogTrackHolder.get(), LogBusBaseType.HTTP_RESPONSE, responseLog); + respData = "ignore"; } else { - // 包装响应 - ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response); - // 处理请求 - filterChain.doFilter(requestWrapper, responseWrapper); - // 获取请求体数据 - requestLog.put("requestBody", getContent(requestWrapper.getContentAsByteArray())); - // 记录请求日志 - saveLog(logTrack, LogBusBaseType.HTTP_REQUEST, requestLog); - // 获取响应头信息 - JSONObject responseHeaders = getResponseHeaders(responseWrapper); - // 获取响应体数据 - Object respData = getContent(responseWrapper.getContentAsByteArray()); - // 将内容复制回原始响应 - responseWrapper.copyBodyToResponse(); - // 停止计时 - sw.stop(); - // 保存日志 - JSONObject responseLog = JSONObject.of( - "headers", responseHeaders, - "responseBody", respData, - "execTime", sw.getTotalTimeMillis() - ); - saveLog(LogTrackHolder.get(), LogBusBaseType.HTTP_RESPONSE, responseLog); + // 获取响应内容 + respData = getContent(responseWrapper.getContentAsByteArray()); } + + // 将内容复制回原始响应 + responseWrapper.copyBodyToResponse(); + + // 停止计时 + sw.stop(); + + // 保存日志 + JSONObject responseLog = JSONObject.of( + "headers", responseHeaders, + "responseBody", respData, + "execTime", sw.getTotalTimeMillis() + ); + saveLog(LogTrackHolder.get(), LogBusBaseType.HTTP_RESPONSE, responseLog); } /**