import org.apache.log4j.spi.LoggingEvent;
public class SpecialAppender extends org.apache.log4j.RollingFileAppender {
private String prefix = "";
public SpecialAppender() {
addFilter(new MyFilter());
}
private class MyFilter extends org.apache.log4j.spi.Filter {
public MyFilter() {
}
// @Override
public int decide(LoggingEvent loggingEvent) {
if (loggingEvent == null || loggingEvent.getMessage() == null) {
return super.DENY;
}
if (loggingEvent.getMessage().toString().startsWith(prefix)) {
return super.ACCEPT;
}
return super.DENY;
}
}
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
}
过滤器 MyFilter 过滤以prefix(在log4j.properties中配置的)为前缀的Message. 如果MESSAGE以prefix为前缀则打印log.