web-dev-qa-db-fra.com

Quelle est la signification de la propriété log4j.rootLogger dans le fichier log4j.properties? Que se passe-t-il si je n'utilise pas cette propriété?

Quelle est la signification de log4j.rootLogger propriété dans log4j.properties fichier? Que se passe-t-il si je n'utilise pas cette propriété?

Exemple:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.Apache.log4j.ConsoleAppender

Que se passe-t-il si je définit cette propriété sur ERROR mode?.

75
Jitendra

Samudra Gupta explique dans son livre1:

L'objet Logger est l'objet principal utilisé par un développeur d'application pour consigner un message. Les objets Logger agissant dans une instance particulière d'une application suivent une hiérarchie parent-enfant .

Si vous avez la configuration suivante:

log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.Apache.log4j.SimpleLayout
log4j.logger.com.me.proj2=INFO

Voici comment la hiérarchie des enregistreurs pourrait se retrouver:2

Tree

Samudra Gupta continue à expliquer:

Un enregistreur racine se trouve au sommet de la hiérarchie. L'enregistreur racine existe en dehors de la portée de toute hiérarchie d'enregistreurs personnalisée que nous pouvons établir. Il existe toujours en tant que consignateur racine pour toutes les hiérarchies de consignateurs possibles et il n'a pas d'espace de nom. Tous les autres objets Logger spécifiques à l'application sont des objets enfants du logger racine. La relation parent-enfant des enregistreurs signifie la dépendance des enregistreurs agissant au sein de la même application. Un enregistreur enfant peut hériter des propriétés de son enregistreur parent de manière récursive dans l'arborescence. Généralement, un consignateur enfant hérite des propriétés suivantes de son consignateur parent:

  • Level: Si le logger enfant n'a pas de niveau d'arborescence explicite spécifié, il utilisera le niveau de son parent le plus proche ou le premier niveau correct qu'il trouve récursivement dans la hiérarchie.
  • Appender: S'il n'y a pas d'appendeur attaché à un enregistreur, l'enregistreur enfant utilise l'appendeur de l'enregistreur parent le plus proche ou le premier appendeur qu'il trouve récursivement dans l'arborescence.
  • ResourceBundle: ResourceBundles sont des fichiers de propriétés de modèle clé-valeur utilisés pour la localisation des messages de journalisation. Un enregistreur enfant hérite de ResourceBundle associé à son enregistreur parent.

[~ # ~] note [~ # ~]

1 Samudra Gupta, Pro Apache Log4j, Deuxième édition (Berkeley, CA: Apress, 2005), 24-25, ISBN13: 978-1-59059-499-5

2 Dominic Mitchell, Connexion à Java, http://happygiraffe.net/blog/2008/09/03/logging-in-Java/ , récupéré le 26 mai 2014 .

79
Paul Vargas

Répondre

Que se passe-t-il si je n'utilise pas cette propriété?

Si vous ne définissez pas rootLogger sur un niveau et un appender, vous recevrez un avertissement.

Par exemple, si vous omettez ou commentez la ligne log4j.rootLogger=DEBUG, stdout, c’est-à-dire que votre fichier log4j.properties contient uniquement le rootlogger et aucun autre enregistreur, ici l’enregistreur racine faisant l’objet d’un commentaire:

#log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.Apache.log4j.SimpleLayout

Vous obtiendrez quelque chose comme la sortie suivante:

log4j:WARN No appenders could be found for logger (log4jtests.Log4jHelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
7
user2066936

La propriété log4j.rootLogger définit le niveau (DEBUG ici) et Appender (A1 ici) pour l'enregistreur racine. Ce n'est pas obligatoire. L'enregistreur racine n'a pas d'appender par défaut et il peut exister sans appender. Ainsi, votre fichier de propriétés log4j peut être sans que cette propriété soit définie.

L'enregistreur racine est l'enregistreur le plus élevé dans la hiérarchie log4j, similaire à la classe Object en Java.

5
abhishek jotshi