From 2e3e1b12d1e9278ee92e2c97dae09a91a23516ea Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 26 Jul 2025 20:27:07 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E3=80=90=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E3=80=91AccessLogFilter=20=E8=AE=B0=E5=BD=95=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=8F=91=E7=94=9F=E5=BC=82=E5=B8=B8=EF=BC=8C=E9=9D=99=E9=BB=98?= =?UTF-8?q?=E5=A4=84=E7=90=86=EF=BC=8C=E4=B8=8D=E5=BD=B1=E5=93=8D=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/logging/AccessLogFilter.java | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/logging/AccessLogFilter.java b/yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/logging/AccessLogFilter.java index b01343f8d..9a29f7a36 100644 --- a/yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/logging/AccessLogFilter.java +++ b/yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/logging/AccessLogFilter.java @@ -74,26 +74,31 @@ public class AccessLogFilter implements GlobalFilter, Ordered { // TODO 芋艿:暂未实现 // 方式三:打印到控制台,方便排查错误 - Map values = MapUtil.newHashMap(15, true); // 手工拼接,保证排序;15 保证不用扩容 - values.put("userId", gatewayLog.getUserId()); - values.put("userType", gatewayLog.getUserType()); - values.put("routeId", gatewayLog.getRoute() != null ? gatewayLog.getRoute().getId() : null); - values.put("schema", gatewayLog.getSchema()); - values.put("requestUrl", gatewayLog.getRequestUrl()); - values.put("queryParams", gatewayLog.getQueryParams().toSingleValueMap()); - values.put("requestBody", JsonUtils.isJson(gatewayLog.getRequestBody()) ? // 保证 body 的展示好看 - JSONUtil.parse(gatewayLog.getRequestBody()) : gatewayLog.getRequestBody()); - values.put("requestHeaders", JsonUtils.toJsonString(gatewayLog.getRequestHeaders().toSingleValueMap())); - values.put("userIp", gatewayLog.getUserIp()); - values.put("responseBody", JsonUtils.isJson(gatewayLog.getResponseBody()) ? // 保证 body 的展示好看 - JSONUtil.parse(gatewayLog.getResponseBody()) : gatewayLog.getResponseBody()); - values.put("responseHeaders", gatewayLog.getResponseHeaders() != null ? - JsonUtils.toJsonString(gatewayLog.getResponseHeaders().toSingleValueMap()) : null); - values.put("httpStatus", gatewayLog.getHttpStatus()); - values.put("startTime", LocalDateTimeUtil.format(gatewayLog.getStartTime(), NORM_DATETIME_MS_FORMATTER)); - values.put("endTime", LocalDateTimeUtil.format(gatewayLog.getEndTime(), NORM_DATETIME_MS_FORMATTER)); - values.put("duration", gatewayLog.getDuration() != null ? gatewayLog.getDuration() + " ms" : null); - log.info("[writeAccessLog][网关日志:{}]", JsonUtils.toJsonPrettyString(values)); + try { + Map values = MapUtil.newHashMap(15, true); // 手工拼接,保证排序;15 保证不用扩容 + values.put("userId", gatewayLog.getUserId()); + values.put("userType", gatewayLog.getUserType()); + values.put("routeId", gatewayLog.getRoute() != null ? gatewayLog.getRoute().getId() : null); + values.put("schema", gatewayLog.getSchema()); + values.put("requestUrl", gatewayLog.getRequestUrl()); + values.put("queryParams", gatewayLog.getQueryParams().toSingleValueMap()); + values.put("requestBody", JsonUtils.isJson(gatewayLog.getRequestBody()) ? // 保证 body 的展示好看 + JSONUtil.parse(gatewayLog.getRequestBody()) : gatewayLog.getRequestBody()); + values.put("requestHeaders", JsonUtils.toJsonString(gatewayLog.getRequestHeaders().toSingleValueMap())); + values.put("userIp", gatewayLog.getUserIp()); + values.put("responseBody", JsonUtils.isJson(gatewayLog.getResponseBody()) ? // 保证 body 的展示好看 + JSONUtil.parse(gatewayLog.getResponseBody()) : gatewayLog.getResponseBody()); + values.put("responseHeaders", gatewayLog.getResponseHeaders() != null ? + JsonUtils.toJsonString(gatewayLog.getResponseHeaders().toSingleValueMap()) : null); + values.put("httpStatus", gatewayLog.getHttpStatus()); + values.put("startTime", LocalDateTimeUtil.format(gatewayLog.getStartTime(), NORM_DATETIME_MS_FORMATTER)); + values.put("endTime", LocalDateTimeUtil.format(gatewayLog.getEndTime(), NORM_DATETIME_MS_FORMATTER)); + values.put("duration", gatewayLog.getDuration() != null ? gatewayLog.getDuration() + " ms" : null); + log.info("[writeAccessLog][网关日志:{}]", JsonUtils.toJsonPrettyString(values)); + } catch (Exception e) { + // 兜底处理,参见 https://gitee.com/zhijiantianya/yudao-cloud/issues/IC9A70 + log.error("[writeAccessLog][打印网关日志时,发生异常]", e); + } } @Override