Récupérer la liste des annexes Log4J à l'exécution
Est-il possible de récupérer une liste de tous les appenders configuré dans log4j au moment de l'exécution?
Je vais étoffer le scénario un peu plus. Compte tenu de la configuration suivante comment pourrais-je récupérer tous les appenders (stdout et altstdout)?
log4j.rootLogger=error, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.altstdout=org.apache.log4j.ConsoleAppender
log4j.appender.altstdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.altstdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
source d'informationauteur binarymelon
Vous devez vous connecter pour publier un commentaire.
Si vous voulez accéder à toutes les appenders configuré pour tous les enregistreurs vous devez faire quelque chose comme ceci
Je ne sais pas pourquoi log4j n'a pas de méthode comme LogManager.getAllAppenders(), mais il ressemble
désavantage.
C'est l'un de ce que vous avez besoin
log4j Méthode getAllAppenders
Je veux ajouter quelque chose qui m'a pris un certain temps pour comprendre.
Si vous regardez la figure ci-dessous (que j'ai copié à partir de ici), vous pouvez le voir, que même si l'enregistreur de
com.foo.bar
sera imprimée à la racine des enregistreurs de FileAppender, son appender liste est toujours null. Si vous ne pouvez pas obtenir tous les appenders le logger écrire avec la méthodelogger.getAllAppenders()
.Pour cela, vous devez parcourir tous les parents et la racine enregistreur séparément. Parce que vous ne pouvez pas effectuer une itération
logger.getParent()
à la racine de l'enregistreur (logger racine renvoie null - voir la documentation de getParent()). Autant que je sache, vous avez accès à la rootLoggers' appenders séparément viaLogger.getRootLogger().getAllAppenders().
Solution de travail pour Log4j 1:
Remarque: getAllAppenders obtiendrez seulement le journal actif. Pas la liste complète des fichiers définis dans votre log4j.xml fichier de configuration.
Voici comment je pouvais atteindre cet pour la mise rwxrwxrwx droits sur tous les fichiers journaux