如何创建不将WARN消息记录到日志

时间:2017-06-20 01:05:08

标签: java spring spring-mvc spring-boot

我有这个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。如果可能的话,这会产生额外的样板。

1 个答案:

答案 0 :(得分:5)

AbstractHandlerExceptionResolverExceptionHandlerExceptionResolver的超类型,在setWarnLogCategory控制解决异常时,会保留warnLogger来记录该消息。

  

默认是没有警告日志记录。指定此设置以激活警告   登录到特定类别。或者,覆盖   用于自定义日志记录的logException(java.lang.Exception, javax.servlet.http.HttpServletRequest)方法。

当您创建ExceptionHandlerExceptionResolver(或通过默认配置为您创建)时,它已设置为null而未使用。

使用Spring Boot,您可以控制是否使用

启用它
spring.mvc.logResolvedException

应用程序属性。这将控制WebMvcProperties中的相应值。 (默认情况下为false,因此您必须在配置中将其设置为true,或者您已明确调用setWarnLogCategory。)

或者,关闭记录器。