修改日志打印
This commit is contained in:
@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user