修改特定异常的Feign日志行为

时间:2016-07-20 09:12:20

标签: spring tomcat feign

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

显然,这不是问题,而是编写日志的嵌入式Tomcat。

我们能够添加一个" 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;
    }
});