web-dev-qa-db-fra.com

fichier log4j.properties - plusieurs enregistreurs dans la même classe

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:

  • Logger1 écrit des événements INFO liés à un ensemble d'événements système
  • Logger2 écrit des événements INFO liés à un autre ensemble d'événements système
  • Aucune entrée ne doit apparaître deux fois dans le journal

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
44
Alex Averbuch

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
45
kjp