禁止在 Spring 引导中针对异常的警告日志



我有一个这样的自定义异常

@ResponseStatus(HttpStatus.UNAUTHORIZED)
public class AccessException extends RuntimeException {
}

但是当我把它从@RestController扔出来时,它会记录这个:

2018-04-17 11:44:58.239  WARN 17928 --- [nio-8080-exec-3] .w.s.m.a.ResponseStatusExceptionResolver : Resolved exception caused by Handler execution: site.user.AccessException

我尝试检查源代码,但找不到记录的位置。我不想关闭日志记录,因为它可能会记录我感兴趣的其他内容。我只是不认为每次都应该记录这样的自定义异常。

您可以将类org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver的日志级别设置为 ERROR 。这样,您只会丢失此类的WARNDEBUGTRACE日志。

如果您想从此类中看到一些 WARN 级别的异常,我会看到两个选项:

  • org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver复制到代码库,更改日志记录。确保你的副本在类路径的顶部,Spring 在下面。这是一种黑客攻击。ResponseStatusExceptionResolver 是 Spring 的实现细节。在将来的版本中可能会更改/移动/删除它。
  • 编写你自己的 org.springframework.web.servlet.HandlerExceptionResolver 实现,注册它,确保 ResponseStatusExceptionResolver 未注册。

在 Spring 中,您可以将此行添加到application.properties中,以指定特定类的日志记录级别:

logging.level.site.user.AccessException=ERROR

logging.level.site.user.AccessException=OFF

最新更新