log4j:记录包,但不包括其子包

嗨,我想排除某些子包被我的一个记录器记录,因为它们被另一个记录器记录。 例如。

com.mysite.app = logger1 com.mysite.app.news = logger2 com.mysite.app.events = logger3 

我希望logger1只记录logger2和logger3未记录的com.mysite.app(包括com.mysite.app.utilities)。 我怎么能这样做?

(请提供属性格式的帮助,其他参考奖励积分的XML格式)

我一直认为log4j.logger.com.mysite.app = logger1负责将来自子包的消息记录到logger1

如果你真的不希望logger2logger3的消息干扰logger3的消息,你需要将它们的可加性设置为false

 log4j.additivity.com.mysite.app.news=false log4j.additivity.com.mysite.app.events=false 

试试:

 log4j.logger.com.mysite.app=info, stdout log4j.additivity.com.mysite.app=false log4j.logger.com.mysite.app.news=off, stdout log4j.additivity.com.mysite.app.news=false log4j.logger.com.mysite.app.events=off, stdout log4j.additivity.com.mysite.app.events=false 

对于XML配置: