定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明。
源代码记载:
public boolean isAsSevereAsThreshold(Priority priority)
{
return threshold == null || priority.isGreaterOrEqual(threshold);
}
重写 isAsSevereAsThreshold(Priority priority)方法
public class VisitorLogAppender extends DailyRollingFileAppender {
@Override
public boolean isAsSevereAsThreshold(Priority priority) {
//只判断是否相等,而不判断优先级
return this.getThreshold().equals(priority);
}
}
这样,进行唯一判断,只有当Threshold与priority一致时,才进行输出,就实现了真正Log4j按照级别输出日志文件。
在log4j.properties中,将配置文件作如下修改:
### VisitorLog ###
log4j.appender.vs=com.xinniu.log4j.VisitorLogAppender
log4j.appender.vs.File = ../logs/testXinniuLogs-visit.log
log4j.appender.vs.Append = true
log4j.appender.vs.Threshold = FATAL
log4j.appender.vs.layout=org.apache.log4j.PatternLayout
log4j.appender.vs.layout.ConversionPattern = %m%n
到此,即完成了按照Log4j按照日志级别输出到不同文件中的功能。