Shailesh Vaishampayan
Shailesh Vaishampayan

Reputation: 1796

How to prevent log4j logs from being redirected to root logger

I have only two loggers defined : one is root logger and another one is common logger. I think then common logger becomes immediate child of root logger right? if yes, then how to prevent logs printed by common logger's appender to bubble up to root logger's appender?

according to docs :

However, if an ancestor of logger C say P, has the additivity flag set to false, then C's output will be directed to all the appenders in C and its ancestors upto and including P but not the appenders in any of the ancestors of P.

means the logger whose additivity is set to false will have all its logs to be bubbled up to its parent but not above that. Am i correct?

If yes then setting additivity flag of my common logger wouldn't help(in fact it doesn't :)) and the logs are still printed to both common and root logger. How to prevent this?

Upvotes: 3

Views: 4734

Answers (2)

Shailesh Vaishampayan
Shailesh Vaishampayan

Reputation: 1796

#root logger config starts
log4j.rootLogger=INFO, RA
log4j.appender.RA=org.apache.log4j.RollingFileAppender
log4j.appender.RA.File=/Data/var/logs/root.log
log4j.appender.RA.MaxFileSize=100KB
# Keep one backup file
log4j.appender.RA.MaxBackupIndex=1
log4j.appender.RA.layout=org.apache.log4j.PatternLayout
log4j.appender.RA.layout.ConversionPattern=%p %d - %m%n
# root config logger ends

#ico common logger config starts
log4j.logger.com=INFO, COMMONA
log4j.appender.COMMONA=org.apache.log4j.RollingFileAppender
log4j.additivity.com=false
log4j.appender.COMMONA.File=/Data/var/logs/common_ico.log
log4j.appender.COMMONA.MaxFileSize=100KB
# Keep one backup file
log4j.appender.COMMONA.MaxBackupIndex=1
log4j.appender.COMMONA.layout=org.apache.log4j.PatternLayout
log4j.appender.COMMONA.layout.ConversionPattern=[%x]%p %d - %m%n
#ico common logger config ends

Above config works. I was using log4j.additivity.COMMONA=false instead of log4j.additivity.com=false

Upvotes: 4

Evgeniy Dorofeev
Evgeniy Dorofeev

Reputation: 136062

with this config

<appender name="a2" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="common %m%n" />
    </layout>
</appender>
<appender name="a1" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="root %m%n" />
    </layout>
</appender>
<logger name="common" additivity="false">
    <appender-ref ref="a2" />
</logger>
<root>
    <priority value="debug" />
    <appender-ref ref="a1" />
</root>

this

Logger.getLogger("common").debug("1111");

prints

common 1111

Upvotes: 2

Related Questions