0

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

有没有办法改变这种行为?

谢谢。

4

1 回答 1

0

显然,问题不在于 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;
    }
});
于 2016-07-20T15:43:58.590 回答