Logback 过滤特定字符串的日志

有一个第三方的包,在运行时会打出大量我觉得没有用的日志,假设它都以abcdef开头,要怎么办呢?一般的 log 过滤,都是按等级来设置的,例如不记录 debug、info 级别的 log。如果涉及到字符串的匹配,要怎么做?

做法是在logback.xml<appender>里面,加上<filter>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
        <pattern>%d{yy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>

    <filter class="com.xxxxxxx.MyThresholdFilter"/>  <!-- 加在这里 -->
</appender>

然后另外再创建这个MyThresholdFilter.java

public class MyThresholdFilter extends ThresholdFilter {
    @Override
    public FilterReply decide(ILoggingEvent event) {
        if (event.getMessage().startsWith("abcdef")) {
            return FilterReply.DENY;
        }
        return FilterReply.NEUTRAL;
    }
}

发表评论