web-dev-qa-db-fra.com

Que signifie seuil dans Log4J?

Salut à tous, j'ai un log4j propriétés quelque chose comme le ci-dessous. Tout ce qui est enregistré dans TextProcessor.log dépasse le niveau de WARN. Je ne comprends pas le seuil qui est défini ici pour déboguer. Quelqu'un peut-il expliquer ce que le seuil fait

log4j.logger.TextProcessor=warn,TextProcessor


log4j.appender.TextProcessor=org.Apache.log4j.RollingFileAppender
log4j.appender.TextProcessor.File=C:/project/logs/TextProcessor.log
log4j.appender.TextProcessor.MaxFileSize=10MB
log4j.appender.TextProcessor.MaxBackupIndex=10
log4j.appender.TextProcessor.Threshold=debug
log4j.appender.TextProcessor.layout=org.Apache.log4j.PatternLayout
log4j.appender.TextProcessor.layout.ConversionPattern=[%d] [%5p] (%F:%L) - %m%n

Merci d'avance

78
javanerd

Vous avez deux choses ici: un enregistreur et un appender. Malheureusement, vous avez choisi le même nom pour les deux, ce qui n’est pas très clair.

Le niveau minimum de l'enregistreur est configuré pour avertir, ce qui signifie que tout ce que vous enregistrez avec cet enregistreur qui n'a pas au moins le niveau d'avertissement sera ignoré.

Une fois qu'un message est accepté par l'enregistreur, il est envoyé à un ou plusieurs ajouteurs (à un fichier, à la console, à un serveur de messagerie, etc.). Chacun de ces appenders peut définir un seuil. Vous pouvez par exemple limiter les messages de la console aux erreurs, mais accepter les messages d'avertissement du fichier journal.

121
JB Nizet

Le seuil est le deuxième filtre pour les messages à consigner

par exemple.:

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.TextProcessor.Threshold=Error

si Logger est défini sur le niveau DEBUG et que le seuil appender est défini sur Error, alors avec l'appender TextProcessor uniquement, les messages d'erreur et de gravité supérieure sont consignés.

L’utilisation de Threshold permet de définir différents appender avec différents niveaux de seuil. Par exemple, dans l’exemple mentionné ci-dessus, vous pouvez également activer InfoLogger avec la journalisation des messages de niveau Info.

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.InfoLogger.Threshold=INFO

Pour comprendre les niveaux, il y a ci-dessous des niveaux de journalisation dans log4j:

FATAL: shows messages at a FATAL level only  
ERROR: Shows messages classified as ERROR and FATAL  
WARNING: Shows messages classified as WARNING, ERROR, and FATAL  
INFO: Shows messages classified as INFO, WARNING, ERROR, and FATAL  
DEBUG: Shows messages classified as DEBUG, INFO, WARNING, ERROR, and FATAL  
TRACE : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL
ALL : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL 
OFF : No log messages display

allez à URL pour plus de détails

30

Les niveaux de journalisation sont TRACE, DEBUG, INFO, WARN, ERROR et FATAL. Vous pourrez choisir quoi vous connecter à quel niveau du code en fonction de la gravité. Par exemple, vous aurez la possibilité de consigner l'entrée et la sortie des méthodes, mais vous pourrez choisir de vous connecter au niveau DEBUG. Cela vous aidera à déboguer le code car, par défaut, il s’imprimera sur la console (l’appender de console par défaut est activé). En cours de production, vous pouvez augmenter le seuil à ERROR et empêcher l'application d'imprimer des détails inutiles sur la console ou les fichiers journaux.

25
Vinod R

Donnez-vous un mappage simple du fichier de configuration des propriétés au flux des messages du journal. (J'ai caché quelques lignes de configuration pour minimiser)

log4j.rootLogger=ALL, stdout
log4j.logger.com.xyz=INFO, file

log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
...

log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.Threshold=WARN
...

schema of logging from settings above

Pour comprendre ce que c'est, vous devez savoir que:

  • Les niveaux de journalisation augmentent lors de l'extraction à l'extrême gauche: TRACE, DEBUG, INFO, WARN, ERROR et FATAL
  • Consignation de niveau minimum que le consignateur accepte de l'application.
  • Enregistrement de niveau minimum sur un appender qui décide de ce qui sera écrit

** Il y a quelque chose de plus complexe en matière d'héritage et d'additivité, mais vous devriez commencer par des choses simples et élémentaires.

10
Ken Block