修改日志打印
This commit is contained in:
@ -54,7 +54,7 @@ public class LoggingGlobalFilter implements GlobalFilter, Ordered {
|
||||
private static class CustomExchange extends ServerWebExchangeDecorator implements CustomExchangeInterface {
|
||||
|
||||
private final StringBuilder requestBody = new StringBuilder();
|
||||
private final StringBuilder responseBody = new StringBuilder();
|
||||
private StringBuilder responseBody = new StringBuilder();
|
||||
|
||||
public CustomExchange(ServerWebExchange delegate) {
|
||||
super(delegate);
|
||||
@ -80,23 +80,23 @@ public class LoggingGlobalFilter implements GlobalFilter, Ordered {
|
||||
@Override
|
||||
public ServerHttpResponse getResponse() {
|
||||
return new ServerHttpResponseDecorator(super.getResponse()) {
|
||||
private final StringBuilder responseBodyBuilder = new StringBuilder();
|
||||
|
||||
@Override
|
||||
public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
|
||||
if (body instanceof Flux) {
|
||||
Flux<? extends DataBuffer> fluxBody = (Flux<? extends DataBuffer>) body;
|
||||
return super.writeWith(fluxBody.map(buffer -> {
|
||||
byte[] content = new byte[buffer.readableByteCount()];
|
||||
buffer.read(content);
|
||||
DataBufferUtils.release(buffer);
|
||||
|
||||
String responseStr = new String(content, StandardCharsets.UTF_8);
|
||||
responseBody.append(responseStr);
|
||||
|
||||
return buffer.factory().wrap(content);
|
||||
}));
|
||||
return super.writeWith(Flux.from(body).doOnNext(this::cacheResponseData));
|
||||
}
|
||||
return super.writeWith(body);
|
||||
}
|
||||
|
||||
private void cacheResponseData(DataBuffer buffer) {
|
||||
byte[] content = new byte[buffer.readableByteCount()];
|
||||
buffer.read(content);
|
||||
responseBodyBuilder.append(new String(content, StandardCharsets.UTF_8));
|
||||
responseBody = responseBodyBuilder;
|
||||
DataBufferUtils.release(buffer); // 释放原始 buffer
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user