Bonjour,

J'aimerais définir un Appender de Log4j par défaut:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public static Logger logger = Logger.getLogger(MaClasse.class);
public static final Logger monLogger = Logger.getLogger("com.xxx.yyy.monPackage");
 
 
PatternLayout layout = new PatternLayout("%d %-5p %m%n");
ConsoleAppender consoleAppender = new ConsoleAppender(layout);
monLogger.addAppender(consoleAppender);
monLogger.setLevel(Level.DEBUG);
Le problème est que si je défini un autre appender dans un fichier log4j.properties, l'affichage de logs est en double. Donc j'aimerai trouver une condition du genre, si un appender est déjà défini, ne pas créer mon propre appender. Et c'est là que je bute.

Si j'appelle la méthode: logger.getAllAppenders() ou monLogger.getAllAppenders() ça me retourne un NullEnumeration. Comme si l'appender n'existait pas, mais pourtant il existe (défini au niveau supérieur).
J'ai essayé ceci: monLogger.getRootLogger().getAllAppenders().hasMoreElements() ça me retourne effectivement true lorsque dans le fichier log4j.properties je définis un appender au niveau root.
Mais lorsque je défini un appender au niveau com.xxx.yyy et rien au niveau root, là je suis coincé.

Encore une fois, je ne veux pas que les logs apparaissent en double et en même temps je veux éviter ce genre de message:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
log4j:WARN No appenders could be found for logger (com.bsb.is.xml2csv.Transformer).
log4j:WARN Please initialize the log4j system properly
Serait-il possible de savoir d'avance si à un niveau du package ou supérieur un appender a déjà été défini ou pas

J'espère que j'étais clair...