Je voudrais avoir deux log4j
enregistreurs dans mon application, et pour qu'il n'y ait pas de "chevauchement" entre le contenu qu'ils écrivent dans leurs journaux de respect.
Par exemple:
Mon log4j.properties est le suivant:
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.Apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.Apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.Apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Mon code Java est le suivant:
public static void main(String[] args) {
PropertyConfigurator.configure(Client.class
.getResource("/log4j.properties"));
xdasLogger = Logger.getLogger("xdasLogger");
logger = Logger.getLogger(Client.class);
logger.info("normal");
xdasLogger.info("xdas");
}
Mais la sortie de ma console est la suivante:
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
xdas
Notez que "xdas" est enregistré à la fois par logger
et xdasLogger
, ce qui n'est pas souhaitable.
Quelqu'un sait-il quelles modifications je dois apporter à mon log4j.properties pour changer la sortie de la console comme suit?
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
Solution (tirée de la réponse acceptée):
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.Apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.additivity.org.Apache=false
log4j.additivity.xdasLogger=false
log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.Apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.Apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Essayez de définir l'additivité des enregistreurs sur false. Cela évitera la propagation vers le rootLogger.
log4j.additivity.org.Apache=false
log4j.additivity.xdasLogger=false