0
点赞
收藏
分享

微信扫一扫

Logback中使用TurboFilter实现日志级别等内容的动态修改

勇敢的趙迦禾 2022-05-06 阅读 87

TurboFIlter不同于之前在[《Logback中如何自定义灵活的日志过滤规则》]一文中介绍的那些通过ch.qos.logback.core.filter.Filter接口实现的过滤器。ch.qos.logback.core.filter.Filter实现的过滤器是与Appender绑定的,而TurboFIlter是与日志上下文绑定的,它会过滤所有的日志请求,并且TurboFIlter的方法中提供了丰富的可访问信息用来进行控制和改写。

比如下面的实现,通过继承ch.qos.logback.classic.turbo.TurboFilter类,并重写decide方法,将org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter类中原本要打印的ERROR日志DENY掉(过滤掉),同时以WAR 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 N级别打印一封相同的内容,这样就实现了对已定义日志的动态修改。

public class ForceWarnFilter extends TurboFilter {

@Override

public FilterReply decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable throwable) {

if (level == Level.ERROR && logger.getName().equals(“org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter”)) {

logger.warn(marker, format, params);

return FilterReply.DENY;

}

return FilterReply.NEUTRAL;

}

}

为了让上面定义的过滤器生效,需要在logback的配置xml中增加如下配置:

举报

相关推荐

0 条评论