Java 如何在Web Flux中的ResponseStatusException上记录请求正文?
我正在尝试为ResponseStatusException(404错误和类似错误)实现自定义日志记录 WebFlux已经有了一个用于此类异常的默认处理程序(),所以我想实现我自己的类似处理程序,并在那里记录我需要的内容。我需要记录方法、URI、HTTP头和请求体。主体是唯一的问题,其他主体可以从ServerHttpRequest轻松检索 My bean CustomResponseStatusExceptionHandler:Java 如何在Web Flux中的ResponseStatusException上记录请求正文?,java,spring,spring-webflux,Java,Spring,Spring Webflux,我正在尝试为ResponseStatusException(404错误和类似错误)实现自定义日志记录 WebFlux已经有了一个用于此类异常的默认处理程序(),所以我想实现我自己的类似处理程序,并在那里记录我需要的内容。我需要记录方法、URI、HTTP头和请求体。主体是唯一的问题,其他主体可以从ServerHttpRequest轻松检索 My bean CustomResponseStatusExceptionHandler: @Slf4j @Component @Order(-1) // @O
@Slf4j
@Component
@Order(-1) // @Order(-1) needed to process exception before default handler
public class CustomResponseStatusExceptionHandler extends WebFluxResponseStatusExceptionHandler {
public CustomResponseStatusExceptionHandler() {
super();
log.info("Registered bean CustomResponseStatusExceptionHandler");
}
@Override
public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
if (ex instanceof ResponseStatusException) {
ServerHttpRequest request = exchange.getRequest();
String body = getBodyFromRequest(request.getBody());
log.error("Request body: {}", body);
}
return Mono.error(ex);
}
private String getBodyFromRequest(ServerHttpRequest request) {
return ???;
}
}
@Slf4j
@组成部分
@Order(-1)/@Order(-1)需要在默认处理程序之前处理异常
公共类CustomResponseStatusExceptionHandler扩展WebFluxResponseStatusExceptionHandler{
公共CustomResponseStatusExceptionHandler(){
超级();
info(“注册的bean CustomResponseStatusExceptionHandler”);
}
@凌驾
公共Mono句柄(ServerWebExchange,Throwable-ex){
if(exinstanceof ResponseStatusException){
ServerHttpRequest请求=exchange.getRequest();
字符串body=getBodyFromRequest(request.getBody());
错误(“请求主体:{}”,主体);
}
返回单声道错误(ex);
}
私有字符串getBodyFromRequest(ServerHttpRequest请求){
返回???;
}
}
这是拦截和记录404错误(以及类似错误)的有效方法吗?如果是,那么如何检索请求正文