首先看這一段簡單的log4j配置
log4j.logger.cn=debug,stdout
log4j.logger.cn.heapstack=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d?[%t]?%-5p?%c?line.%L:?%m%n這個配置導(dǎo)致日志文件中輸出兩行相同的結(jié)果
原因是這樣的,第二行的logger繼承自第一行的logger,兩個logger的apperder都是指向stdout
Appender的輸出是獨(dú)立的,所以導(dǎo)致了我們使用如下代碼獲得logger的時候會輸出兩行
public static Logger logger = Logger.getLogger(cn.heapstack.demopkg.Main.class);
知道這個原因之后解決辦法也就簡單了,即我們不需要定義重復(fù)的appder,
可以把第二行最后的stdout去掉,或者注釋掉第二行,如果輸出級別相同的話
posted on 2007-09-28 09:57
jht 閱讀(1312)
評論(0) 編輯 收藏 所屬分類:
J2EE