Ciao a tutti Ho una proprietà di log4j qualcosa come il seguente. Tutto ciò che è registrato in TextProcessor.log è qualcosa sopra il livello WARN. Non capisco la soglia impostata qui per eseguire il debug. Qualcuno può spiegare cosa fa la soglia
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
Grazie in anticipo
Hai due cose qui: un logger e un appender. Sfortunatamente, hai scelto lo stesso nome per entrambi, il che non lo rende molto chiaro.
Il livello minimo del logger è impostato su warn, il che significa che tutto ciò che si registra con questo logger che non ha almeno il livello di avviso verrà ignorato.
Una volta che un messaggio viene accettato dal registratore, viene inviato a uno o più appendici (a un file, alla console, a un server di posta, ecc.). Ognuna di queste appendici può definire una soglia. Ad esempio, è ansible limitare i messaggi nella console agli errori, ma accettare i messaggi di avviso nel file di registro.
La soglia è il secondo filtro per i messaggi da registrare
per esempio:
log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger . . . log4j.appender.TextProcessor.Threshold=Error
se Logger è impostato a livello DEBUG e la soglia dell’appender è impostata su Errore, quindi con l’appender TextProcessor verranno registrati solo i messaggi di errore e di gravità superiore.
L’uso della soglia è, è ansible definire diversi appender con diversi livelli di soglia, ad esempio nell’esempio sopra citato si può anche avere InfoLogger con la registrazione dei messaggi a livello Info abilitata
log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger . . . log4j.appender.InfoLogger.Threshold=INFO
Per comprendere i livelli, ci sono i seguenti livelli di registrazione in 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
vai all’URL per maggiori dettagli
I livelli di registrazione sono TRACE
, DEBUG
, INFO
, WARN
, ERROR
e FATAL
. Sarai in grado di scegliere cosa registrare a quale livello del codice dipende dalla gravità. Ad esempio, avrai la possibilità di registrare i metodi di entrata e di uscita ma puoi scegliere di accedere al livello DEBUG
. Ciò ti aiuterà a eseguire il debug del codice, poiché di default verrà stampato sulla console (l’appender della console di default è attivo). Mentre si va in produzione è ansible aumentare la soglia in ERROR
e impedire all’applicazione di stampare dettagli non così utili sulla console o sui file di registro.
Fornisci un semplice mapping dal file di configurazione delle proprietà al stream dei messaggi di registro. (Ho nascosto alcune righe di configurazione per ridurre al minimo)
log4j.rootLogger=ALL, stdout log4j.logger.com.xyz=INFO, file log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.file.Threshold=DEBUG ... log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.Threshold=WARN ...
Per capire di cosa si tratta, dovresti sapere che:
** Ci sono alcune cose più complesse riguardo l’ereditarietà e l’additività, ma prima dovresti iniziare da cose semplici e di base.