Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Web Flux中的ResponseStatusException上记录请求正文?_Java_Spring_Spring Webflux - Fatal编程技术网

Java 如何在Web Flux中的ResponseStatusException上记录请求正文?

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

我正在尝试为ResponseStatusException(404错误和类似错误)实现自定义日志记录

WebFlux已经有了一个用于此类异常的默认处理程序(),所以我想实现我自己的类似处理程序,并在那里记录我需要的内容。我需要记录方法、URI、HTTP头和请求体。主体是唯一的问题,其他主体可以从ServerHttpRequest轻松检索

My bean CustomResponseStatusExceptionHandler:

@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错误(以及类似错误)的有效方法吗?如果是,那么如何检索请求正文