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