log4j.additivity是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下 子Logger 会继承 父Logger 的appender,也就是说 子Logger 会在 父Logger 的appender里输出。若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。
log4j.rootLogger=INFO,A
log4j.appender.A=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File=./all.log
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
log4j.appender.A.Threshold=INFO
log4j.appender.A.ImmediateFlush=true
log4j.appender.A.Append=true
log4j.appender.A.DatePattern='.'yyyy-MM-dd
log4j.logger.com.sld.test2=INFO,C
log4j.additivity.com.sld.test2=false
log4j.appender.C=org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File=./test2.log
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
log4j.appender.C.Threshold=DEBUG
log4j.appender.C.ImmediateFlush=true
log4j.appender.C.Append=true
log4j.appender.C.DatePattern='.'yyyy-MM-dd
以上配置,test2.log只会记录com.sld.test2包(子包)下的输出的log信息, all.log记录的是除test2.log信息外的所有信息
还有一种配置如下:
log4j.category.Test1=
INFO, B
log4j.additivity.Test1=false
log4j.appender.B=org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File=./test1.log
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
log4j.appender.B.Threshold=DEBUG
log4j.appender.B.ImmediateFlush=true
log4j.appender.B.Append=true
log4j.appender.B.DatePattern='.'yyyy-MM-dd
log4j.category.Test1是对自定义类的设置,输出由Logger.getLogger参数决定,只有参数值是Test1才会输出到test1.log
private
static final Logger log = Logger.getLogger("Test1");