每当我向我的API发出某种请求时,Sping Boot 就会记录异常,如果它们被抛出的话。
例如,当我发出一个请求GET /api/entity/100
,并且没有id为100的实体时,那么在服务层中,我将抛出一个带有一些消息和HTTP代码的异常EntityNotFoundException
。
问题是,我不希望它记录在控制台,因为它很快使它看起来像垃圾和垃圾邮件。日志将看起来像这样:WARN 15512 --- [nio-8433-exec-3] .w.s.m.a.ResponseStatusExceptionResolver : Resolved [com.demo.mydomain.exceptions.classes.entity.EntityNotFoundException: Unable to find entity of '100' id]
。
显然,我可以通过添加spring.mvc.log-resolved-exception=false
属性来禁用它。然而,这将禁用ResponseStatusExceptionResolver
的所有日志,我希望保留一些其他异常的日志记录,如AccessDeniedException
。
1条答案
按热度按时间g2ieeal71#
您可以创建自己的解析器,扩展
ResponseStatusExceptionResolver
并覆盖其logException()
。如果异常是您不想记录的异常,则返回它。类似于:然后配置使用它:
这个想法是你把这个定制的异常解析器放在默认异常解析器列表的第一个位置,这样它就总是在默认的
ResponseStatusExceptionResolver
之前使用它来解决异常。请注意,您必须将自定义异常解决程序的日志记录级别设置为WARN,以便获得您想要的异常日志记录行为。