聊聊logback的LevelFilter

本文主要研究一下logback的LevelFilter

AbstractMatcherFilter

ch/qos/logback/core/filter/AbstractMatcherFilter.java

public abstract class AbstractMatcherFilter<E> extends Filter<E> {

    protected FilterReply onMatch = FilterReply.NEUTRAL;
    protected FilterReply onMismatch = FilterReply.NEUTRAL;

    final public void setOnMatch(FilterReply reply) {
        this.onMatch = reply;
    }

    final public void setOnMismatch(FilterReply reply) {
        this.onMismatch = reply;
    }

    final public FilterReply getOnMatch() {
        return onMatch;
    }

    final public FilterReply getOnMismatch() {
        return onMismatch;
    }
}

AbstractMatcherFilter继承了Filter,它定义了onMatch及onMismatch属性

LevelFilter

ch/qos/logback/classic/filter/LevelFilter.java

public class LevelFilter extends AbstractMatcherFilter<ILoggingEvent> {

    Level level;

    @Override
    public FilterReply decide(ILoggingEvent event) {
        if (!isStarted()) {
            return FilterReply.NEUTRAL;
        }

        if (event.getLevel().equals(level)) {
            return onMatch;
        } else {
            return onMismatch;
        }
    }

    public void setLevel(Level level) {
        this.level = level;
    }

    public void start() {
        if (this.level != null) {
            super.start();
        }
    }
}

LevelFilter继承了AbstractMatcherFilter,其decide判断event的level等级是否与配置的level一致,一致则返回onMatch,否则返回onMismatch

示例

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    	<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

这里CONSOLE的appender定义了LevelFilter,当level为ERROR级别时ACCEPT,否则DENY

小结

logback提供了LevelFilter,可以配置指定的level、onMatch、onMismatch属性,用于设置指定appender的打印级别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LevelFilterlogback框架中的一个过滤器,用于根据精确的级别匹配过滤日志事件。它可以根据配置的级别来接受或拒绝事件。具体的操作取决于onMatch和onMismatch属性的配置。如果事件的级别与配置的级别相匹配,则过滤器将根据onMatch属性的配置接受事件,否则根据onMismatch属性的配置拒绝事件。\[2\] 在logback的配置文件中,可以使用LevelFilter来过滤日志事件。通过设置level属性来指定过滤的级别,通过设置onMatch和onMismatch属性来指定匹配和不匹配时的操作。比如,可以设置level为INFO,onMatch为ACCEPT,onMismatch为DENY,这样当日志事件的级别为INFO时,过滤器将接受事件,否则拒绝事件。\[2\] 需要注意的是,过滤器的返回值是通过调用decide()方法来确定的。如果返回值为DENY,则日志事件将被放弃并且不会被剩余的过滤器考虑;如果返回值为NEUTRAL,则会经过下一个过滤器,如果没有其他过滤器,则日志事件会被正常处理;如果返回值为ACCEPT,则会立即处理日志,并且跳过后续的过滤器。\[3\] #### 引用[.reference_title] - *1* *2* *3* [LogbackFilters详解](https://blog.csdn.net/zeng6325998/article/details/106336878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值