in start/src/main/java/org/apache/rocketmq/eventbridge/filter/LogFilter.java [48:76]
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequestDecorator accessPermissionDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) {
@Override
public Flux<DataBuffer> getBody() {
return super.getBody().doOnNext(dataBuffer -> {
try {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Channels.newChannel(byteArrayOutputStream).write(dataBuffer.asByteBuffer().asReadOnlyBuffer());
String requestBody = new String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
List<String> requestTraceIds = exchange.getRequest().getHeaders().get(EventBridgeConstants.REQUEST_TRACE_ID);
String requestId = "";
if (!CollectionUtils.isEmpty(requestTraceIds)) {
requestId = requestTraceIds.get(0);
}
log.info("requestTraceId : {} | url : {} | requestParam : {} | requestMethod : {} | requestBody : {}",
requestId,
exchange.getRequest().getURI(),
exchange.getRequest().getQueryParams(),
exchange.getRequest().getMethodValue(),
new Gson().toJson(requestBody));
} catch (IOException e) {
log.error("LoginFilter | filter => e ", e);
throw new EventBridgeException(e);
}
});
}
};
return chain.filter(exchange.mutate().request(accessPermissionDecorator).build());
}