修改日志打印

This commit is contained in:
2025-07-09 01:58:33 +08:00
parent 09d5667f71
commit 15de2a52de

View File

@ -27,15 +27,38 @@ import java.nio.charset.StandardCharsets;
@Slf4j @Slf4j
@Component @Component
public class LoggingGlobalFilter implements GlobalFilter, Ordered { public class LoggingGlobalFilter implements GlobalFilter, Ordered {
@Override @Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// 创建一个同时装饰 request 和 response 的 exchange // 创建自定义 exchange 装饰器
ServerWebExchange decoratedExchange = new ServerWebExchangeDecorator(exchange) { CustomExchange decoratedExchange = new CustomExchange(exchange);
return chain.filter(decoratedExchange)
.then(Mono.fromRunnable(() -> {
log.info("🌐 请求路径: {}", exchange.getRequest().getPath());
log.info("📥 请求头: {}", exchange.getRequest().getHeaders());
log.info("📥 请求体: {}", decoratedExchange.getRequestBody());
log.info("🔚 响应状态: {}", exchange.getResponse().getStatusCode());
log.info("📤 响应内容: {}", decoratedExchange.getResponseBody());
}));
}
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE; // 最后执行
}
/**
* 自定义装饰器,实现 ServerWebExchange 并扩展 body 记录功能
*/
private static class CustomExchange extends ServerWebExchangeDecorator implements CustomExchangeInterface {
private final StringBuilder requestBody = new StringBuilder(); private final StringBuilder requestBody = new StringBuilder();
private final StringBuilder responseBody = new StringBuilder(); private final StringBuilder responseBody = new StringBuilder();
public CustomExchange(ServerWebExchange delegate) {
super(delegate);
}
@Override @Override
public ServerHttpRequest getRequest() { public ServerHttpRequest getRequest() {
return new ServerHttpRequestDecorator(super.getRequest()) { return new ServerHttpRequestDecorator(super.getRequest()) {
@ -76,32 +99,21 @@ public class LoggingGlobalFilter implements GlobalFilter, Ordered {
}; };
} }
@Override
public String getRequestBody() { public String getRequestBody() {
return requestBody.toString(); return requestBody.toString();
} }
@Override
public String getResponseBody() { public String getResponseBody() {
return responseBody.toString(); return responseBody.toString();
} }
};
return chain.filter(decoratedExchange)
.then(Mono.fromRunnable(() -> {
log.info("🌐 请求路径: {}", exchange.getRequest().getPath());
log.info("📥 请求头: {}", exchange.getRequest().getHeaders());
log.info("📥 请求体: {}", ((CustomExchange) decoratedExchange).getRequestBody());
log.info("🔚 响应状态: {}", exchange.getResponse().getStatusCode());
log.info("📤 响应内容: {}", ((CustomExchange) decoratedExchange).getResponseBody());
}));
} }
@Override /**
public int getOrder() { * 扩展接口,提供获取 body 的方法
return Ordered.LOWEST_PRECEDENCE; // 最后执行 */
} private interface CustomExchangeInterface extends ServerWebExchange {
// 自定义接口用于获取 body 内容
private interface CustomExchange extends ServerWebExchange {
String getRequestBody(); String getRequestBody();
String getResponseBody(); String getResponseBody();
} }