spring - 针对特定异常修改 Feign 日志行为

标签 spring tomcat feign

我有一个返回定制异常的 spring Controller 。 但是,我不希望该特定异常导致“Log.Error()” 不幸的是,Feign 会自动以这种方式记录它。

有什么办法可以改变这种行为吗?

谢谢。

最佳答案

显然,问题不在于 Feign,而在于写入日志的嵌入式 Tomcat。

我们能够向 Logger 添加“TurboFilter”以防止特定异常进入我们的日志:

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.turbo.TurboFilter;

// o.a.c.c.C is the name of the Apache Tomcat logger
Logger root = (Logger) LoggerFactory.getLogger("o.a.c.c.C");
root.getLoggerContext().addTurboFilter(new TurboFilter() {
    @Override
    public FilterReply decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable t) {
        if(null != t && t instanceof OurCustomException) {
            return FilterReply.DENY;
        }

        return FilterReply.ACCEPT;
    }
});

关于spring - 针对特定异常修改 Feign 日志行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38477054/

相关文章:

database - 使用 C3P0 时如何最好地关闭连接并避免非事件 session ?

tomcat - MaxActive 数据库连接参数不起作用

Java 网页开发 : Sessions are not saved between requests and a new JSESSIONID is created

maven - 使用 Maven Tomcat 插件部署失败

java - 使用 @Configuration bean 覆盖 @FeignClient 进行测试

spring-boot - 如何为特定客户端设置自定义 Feign RequestInterceptor?

java - CRUDRepository 的 Spring Data Redis 问题

java - 连接池问题

Spring Boot - 类路径 list 属性

java - 如何根据feign.Response抛出异常?