如何解决如何在Web Flux中的ResponseStatusException上记录请求正文?
我正在尝试为ResponseStatusExceptions(404错误和类似错误)实现自定义日志记录。
Web Flux已经具有用于此类异常的默认处理程序(WebFluxResponseStatusExceptionHandler),因此我想实现自己的类似处理程序并在此处记录所需的内容。我需要记录方法,URI,HTTP标头和请求正文。主体是唯一的问题,其他问题可以很容易地从ServerHttpRequest中检索出来。
我的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 ???;
}
}
这是拦截和记录404错误(和类似错误)的有效方法吗?如果是,那我该如何检索请求正文?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。