一尘不染

使用Jackson的Spring REST-400错误的请求记录

spring

我已经使用Jackson / JSON对Spring REST进行了很好的设置,并且一切正常。

但是我故意在消息的结构中引入了一个错误,导致400-错误的请求。但是服务器上没有日志输出。我所期望的错误将是“杰克逊未知属性异常”之类的东西,但它被捕获,并且向客户端发送了400错误,但服务器上没有该异常的日志。

我不想明确调试服务器上的所有内容,但是我想要像这样的Spring网络级异常明确标记为错误。

开启此功能的正确方法是什么?


阅读 362

收藏
2020-04-18

共2个答案

一尘不染

@ExceptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public void handle(HttpMessageNotReadableException e) {
    logger.warn("Returning HTTP 400 Bad Request", e);
}
2020-04-18
一尘不染

你可以使用@ControllerAdvice(在Spring 3.2中引入)为所有控制器全局启用此功能。它确实需要一些代码,但是以我的经验,你通常最终还是需要全局错误处理配置,这使你可以设置断点/轻松检查问题。

下面是一个示例:

@ControllerAdvice
public class ControllerConfig {

    @ExceptionHandler
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public void handle(HttpMessageNotReadableException e) {
        log.warn("Returning HTTP 400 Bad Request", e);
        throw e;
    }
}
2020-04-18