针对特定异常修改 Feign 日志行为
Modify Feign log behavior for specific exceptions
我有一个 spring 控制器,它 returns 是一个定制的异常。
但是,我不希望该特定异常导致 "Log.Error()"
不幸的是,Feign 会自动记录它。
有什么办法可以改变这种行为吗?
谢谢。
显然,问题不是 Feign,而是写入日志的嵌入式 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;
}
});
我有一个 spring 控制器,它 returns 是一个定制的异常。 但是,我不希望该特定异常导致 "Log.Error()" 不幸的是,Feign 会自动记录它。
有什么办法可以改变这种行为吗?
谢谢。
显然,问题不是 Feign,而是写入日志的嵌入式 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;
}
});