fix:【网关】AccessLogFilter 记录日志发生异常,静默处理,不影响请求返回
parent
321e1f5ba1
commit
2e3e1b12d1
|
|
@ -74,26 +74,31 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||||
// TODO 芋艿:暂未实现
|
// TODO 芋艿:暂未实现
|
||||||
|
|
||||||
// 方式三:打印到控制台,方便排查错误
|
// 方式三:打印到控制台,方便排查错误
|
||||||
Map<String, Object> values = MapUtil.newHashMap(15, true); // 手工拼接,保证排序;15 保证不用扩容
|
try {
|
||||||
values.put("userId", gatewayLog.getUserId());
|
Map<String, Object> values = MapUtil.newHashMap(15, true); // 手工拼接,保证排序;15 保证不用扩容
|
||||||
values.put("userType", gatewayLog.getUserType());
|
values.put("userId", gatewayLog.getUserId());
|
||||||
values.put("routeId", gatewayLog.getRoute() != null ? gatewayLog.getRoute().getId() : null);
|
values.put("userType", gatewayLog.getUserType());
|
||||||
values.put("schema", gatewayLog.getSchema());
|
values.put("routeId", gatewayLog.getRoute() != null ? gatewayLog.getRoute().getId() : null);
|
||||||
values.put("requestUrl", gatewayLog.getRequestUrl());
|
values.put("schema", gatewayLog.getSchema());
|
||||||
values.put("queryParams", gatewayLog.getQueryParams().toSingleValueMap());
|
values.put("requestUrl", gatewayLog.getRequestUrl());
|
||||||
values.put("requestBody", JsonUtils.isJson(gatewayLog.getRequestBody()) ? // 保证 body 的展示好看
|
values.put("queryParams", gatewayLog.getQueryParams().toSingleValueMap());
|
||||||
JSONUtil.parse(gatewayLog.getRequestBody()) : gatewayLog.getRequestBody());
|
values.put("requestBody", JsonUtils.isJson(gatewayLog.getRequestBody()) ? // 保证 body 的展示好看
|
||||||
values.put("requestHeaders", JsonUtils.toJsonString(gatewayLog.getRequestHeaders().toSingleValueMap()));
|
JSONUtil.parse(gatewayLog.getRequestBody()) : gatewayLog.getRequestBody());
|
||||||
values.put("userIp", gatewayLog.getUserIp());
|
values.put("requestHeaders", JsonUtils.toJsonString(gatewayLog.getRequestHeaders().toSingleValueMap()));
|
||||||
values.put("responseBody", JsonUtils.isJson(gatewayLog.getResponseBody()) ? // 保证 body 的展示好看
|
values.put("userIp", gatewayLog.getUserIp());
|
||||||
JSONUtil.parse(gatewayLog.getResponseBody()) : gatewayLog.getResponseBody());
|
values.put("responseBody", JsonUtils.isJson(gatewayLog.getResponseBody()) ? // 保证 body 的展示好看
|
||||||
values.put("responseHeaders", gatewayLog.getResponseHeaders() != null ?
|
JSONUtil.parse(gatewayLog.getResponseBody()) : gatewayLog.getResponseBody());
|
||||||
JsonUtils.toJsonString(gatewayLog.getResponseHeaders().toSingleValueMap()) : null);
|
values.put("responseHeaders", gatewayLog.getResponseHeaders() != null ?
|
||||||
values.put("httpStatus", gatewayLog.getHttpStatus());
|
JsonUtils.toJsonString(gatewayLog.getResponseHeaders().toSingleValueMap()) : null);
|
||||||
values.put("startTime", LocalDateTimeUtil.format(gatewayLog.getStartTime(), NORM_DATETIME_MS_FORMATTER));
|
values.put("httpStatus", gatewayLog.getHttpStatus());
|
||||||
values.put("endTime", LocalDateTimeUtil.format(gatewayLog.getEndTime(), NORM_DATETIME_MS_FORMATTER));
|
values.put("startTime", LocalDateTimeUtil.format(gatewayLog.getStartTime(), NORM_DATETIME_MS_FORMATTER));
|
||||||
values.put("duration", gatewayLog.getDuration() != null ? gatewayLog.getDuration() + " ms" : null);
|
values.put("endTime", LocalDateTimeUtil.format(gatewayLog.getEndTime(), NORM_DATETIME_MS_FORMATTER));
|
||||||
log.info("[writeAccessLog][网关日志:{}]", JsonUtils.toJsonPrettyString(values));
|
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
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue