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

时间:2011-03-31 10:52:39

标签: java configuration 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格式)

3 个答案:

答案 0 :(得分:6)

我总是认为log4j.logger.com.mysite.app = logger1负责将来自子包的邮件记录到logger1

如果您确实不希望logger2logger3的消息干扰logger1的消息,则需要将其添加到false

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

答案 1 :(得分:2)

试一试:

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

答案 2 :(得分:0)

对于XML配置:

<logger name="com.mysite.app.news" additivity="false">
    <appender-ref ref="logger2" />
</logger>    
<logger name="com.mysite.app.events" additivity="false">
    <appender-ref ref="logger3" />
</logger>