有一个第三方的包,在运行时会打出大量我觉得没有用的日志,假设它都以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; } }