diff --git a/src/main/java/com/sczx/gateway/filter/LoggingGlobalFilter.java b/src/main/java/com/sczx/gateway/filter/LoggingGlobalFilter.java index fdebebf..617d42e 100644 --- a/src/main/java/com/sczx/gateway/filter/LoggingGlobalFilter.java +++ b/src/main/java/com/sczx/gateway/filter/LoggingGlobalFilter.java @@ -94,7 +94,7 @@ public class LoggingGlobalFilter implements GlobalFilter, Ordered { @Override public ServerHttpResponse getResponse() { ServerHttpResponse originalResponse = super.getResponse(); - DataBufferFactory bufferFactory = originalResponse.bufferFactory(); +// DataBufferFactory bufferFactory = originalResponse.bufferFactory(); return new ServerHttpResponseDecorator(originalResponse) { @Override @@ -102,12 +102,15 @@ public class LoggingGlobalFilter implements GlobalFilter, Ordered { if (body instanceof Flux) { Flux flux = (Flux) body; return super.writeWith(flux.doOnNext(dataBuffer -> { + // 读取数据内容用于日志记录 byte[] bytes = new byte[dataBuffer.readableByteCount()]; dataBuffer.read(bytes); String bodyContent = new String(bytes, StandardCharsets.UTF_8); responseBodyBuilder.append(bodyContent); - DataBufferUtils.release(dataBuffer); - }).map(bytes -> bufferFactory.wrap((ByteBuffer) bytes))); + + // 重置读取位置,以便后续处理可以正常读取 + dataBuffer.readPosition(0); + })); } return super.writeWith(body); }