开发者

log4j: logging a package, but excluding its sub-packages

Hi I'd like to exclude certain subpackages from being logged by one of my loggers, as they are being logged by another logger. Eg.

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

I'd like logger1 to only log any开发者_如何学JAVAthing with com.mysite.app (including com.mysite.app.utilities) not logged by logger2 and logger3. How could I do that?

(help in properties format please, XML format for other's reference for bonus points)


I always used to think that log4j.logger.com.mysite.app = logger1 takes care of logging messages from subpackages too into logger1.

If you really don't want logger2 and logger3's messages from interfering with those of logger1, you need to set their additivity to false.

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


Have a try:

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


For XML configuration:

<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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜