修改日志打印

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
@Component
public class LoggingGlobalFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// 创建一个同时装饰 request 和 response 的 exchange
ServerWebExchange decoratedExchange = new ServerWebExchangeDecorator(exchange) {
// 创建自定义 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 responseBody = new StringBuilder();
public CustomExchange(ServerWebExchange delegate) {
super(delegate);
}
@Override
public ServerHttpRequest getRequest() {
return new ServerHttpRequestDecorator(super.getRequest()) {
@ -76,32 +99,21 @@ public class LoggingGlobalFilter implements GlobalFilter, Ordered {
};
}
@Override
public String getRequestBody() {
return requestBody.toString();
}
@Override
public String getResponseBody() {
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() {
return Ordered.LOWEST_PRECEDENCE; // 最后执行
}
// 自定义接口用于获取 body 内容
private interface CustomExchange extends ServerWebExchange {
/**
* 扩展接口,提供获取 body 的方法
*/
private interface CustomExchangeInterface extends ServerWebExchange {
String getRequestBody();
String getResponseBody();
}