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
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.
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
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.
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
...
Pour comprendre ce que c'est, vous devez savoir que:
** 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.