繁体   English   中英

在 Spring Boot 中抑制异常的警告日志

[英]Suppress warn logs for exception in Spring Boot

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

@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM