思路:root会有一个默认级别级别,如果appender不指定自己的级别的话,那么它就是root这个级别的。
如下: log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
所以要想分不同目录输出,那么appender就要设置不同的且是比默认级别高的才行。
具体的log4j.properties如下,仔细看一遍就能理解了。
log4j.rootLogger = WARN,WARN1,ERROR1 log4j.appender.WARN1=org.apache.log4j.RollingFileAppender #log4j.appender.WARN1.Threshold =WARN log4j.appender.WARN1.File=D:/temp/testLog4j/WARN1/warn1.log log4j.appender.WARN1.MaxFileSize=2048KB log4j.appender.WARN1.MaxBackupIndex=10 log4j.appender.WARN1.layout=org.apache.log4j.TTCCLayout #log4j.appender.WARN1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c:%L]-[%p] %m%n #每天文件的输出:DailyRollingFileAppender log4j.appender.ERROR1 = org.apache.log4j.DailyRollingFileAppender log4j.appender.ERROR1.Threshold = ERROR log4j.appender.ERROR1.File = D:/temp/testLog4j/error1/error1.log log4j.appender.ERROR1.Append = true #默认为true,添加到末尾,false在每次启动时进行覆盖 log4j.appender.ERROR1.ImmediateFlush = true #直接输出,不进行缓存 # ' . ' yyyy - MM: 每个月更新一个log日志 # ' . ' yyyy - ww: 每个星期更新一个log日志 # ' . ' yyyy - MM - dd: 每天更新一个log日志 # ' . ' yyyy - MM - dd - a: 每天的午夜和正午更新一个log日志 # ' . ' yyyy - MM - dd - HH: 每小时更新一个log日志 # ' . ' yyyy - MM - dd - HH - mm: 每分钟更新一个log日志 log4j.appender.ERROR1.DatePattern = ' . ' yyyy - MM - dd ' .log ' #文件名称的格式 log4j.appender.ERROR1.layout = org.apache.log4j.PatternLayout log4j.appender.ERROR1.layout.ConversionPattern =%d %p [ %c] - %m %n %d
上述文档执行的结果,在warn1.log里有warn和error的,在error1.log里面只有error的。