fichier log4j.properties – plusieurs enregistreurs de la même classe

Je voudrais avoir deux loggers log4j différents dans mon application, et pour qu’il n’y ait pas de “chevauchement” entre les contenus, ils écrivent sur leurs logs de respect.

Par exemple:

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

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(Ssortingng[] 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 consigné par logger et xdasLogger , ce qui est indésirable.

Est-ce que quelqu’un sait quelles modifications j’ai besoin de mettre dans mon log4j.properties pour changer la sortie de la console à la suivante?

 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