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.