我有这个Spring @ExceptionHandler,它主要做我想要的。它将HTTP状态代码设置为409,并在JSON响应中包含额外的错误信息。
@ExceptionHandler(PolicyExecutionException.class)
public ResponseEntity handleException(PolicyExecutionException se){
return ResponseEntity.status(HttpStatus.CONFLICT).body(se.getScriptErrorMap());
}
我注意到的是,即使它向客户端提供了正确的响应,Spring也会在WARN级别记录消息。我的信息很长,只与客户有关。我宁愿不在服务器端记录它。这可以关闭吗?
2017-06-19 18:48:10,659 [p-nio-8060-exec-2]警告 o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - 已解决的异常 由Handler执行引起:
我使用的一个替代方法是在每个可以抛出它的Controller方法上捕获PolicyExecutionException
。如果可能的话,这会产生额外的样板。
答案 0 :(得分:5)
AbstractHandlerExceptionResolver
是ExceptionHandlerExceptionResolver
的超类型,在setWarnLogCategory
控制解决异常时,会保留warnLogger
来记录该消息。
默认是没有警告日志记录。指定此设置以激活警告 登录到特定类别。或者,覆盖 用于自定义日志记录的
logException(java.lang.Exception, javax.servlet.http.HttpServletRequest)
方法。
当您创建ExceptionHandlerExceptionResolver
(或通过默认配置为您创建)时,它已设置为null
而未使用。
使用Spring Boot,您可以控制是否使用
启用它spring.mvc.logResolvedException
应用程序属性。这将控制WebMvcProperties
中的相应值。 (默认情况下为false
,因此您必须在配置中将其设置为true
,或者您已明确调用setWarnLogCategory
。)
或者,关闭记录器。