我们有一个基于服务的平台,其中可能(/常见)无法找到资源 - 例如使用错误的用户名调用我们的安全模块将返回404 Not Found,这是每次用户在登录框中输入错误时都会发生的事情。
我们使用Spring RestTemplate进行这些调用,这很棒,但是每次遇到404时,它都会尽职地记录一条警告我们的日志。
我们显然不想抑制警告,除非在404找不到特定情况但似乎没有办法做到这一点(logger是private / final,调用它的方法是私有等)
我们的解决方案并不好 - 使用空数据集返回200 / OK并处理空指针,这既令人讨厌又不是一个很好的宁静实现。
有谁知道更好的方法吗?
答案 0 :(得分:1)
如何在日志记录附加程序上使用RegexFilter过滤器?
http://logging.apache.org/log4j/2.x/manual/filters.html#RegexFilter
......这是Log4J的做法,但我猜测其他日志库必须有类似的过滤器。
答案 1 :(得分:0)
实现一个ResponseErrorHandler,它为hasError()返回false。
使用setErrorHandler()将其分配给您的rest模板。
不会记录警告。
答案 2 :(得分:0)
这是在Spring Framework的问题跟踪器中以issue SPR-12760身份登录,并在今年早些时候(2015年)在4.1.6版中解决。解决方案有两个:首先,警告消息被降级为调试消息,其次,更容易覆盖负责处理错误的代码部分。因此,作为问题的解决方案,请将org.springframework:spring-web module
升级到至少版本4.1.6.RELEASE。