4.1 Elenco dei livelli di registrazione
Hai scritto il tuo programma, lo hai caricato sul server e poi inizi subito ad avere domande:
- Come assicurarsi che
debug()
il metodo non funzioni mentre si lavora inproduction
? - Ci sono troppe informazioni nei log, vuoi lasciare solo messaggi di errore?
- Come visualizzare un registro dettagliato per una parte dell'applicazione?
Naturalmente, i creatori dei registri hanno affrontato la stessa cosa decenni fa. Non ti dirò come è stato risolto questo problema nel linguaggio C, ma nel linguaggio Java è stato risolto magnificamente.
Il registro filtra i dati prima di scrivere le informazioni nel file . È possibile ridurre/aumentare molto rapidamente i dettagli del registro impostando il livello di registrazione. Questi livelli sono descritti nella tabella seguente:
Livello | Nota | |
---|---|---|
1 | TUTTO | Registra tutti i messaggi |
2 | TRACCIA | Piccolo messaggio durante il debug |
3 | DEBUG | Messaggi importanti per il debug |
4 | INFORMAZIONI | Messaggi semplici |
5 | AVVISARE | Scrivi solo fatale, errore e avviso |
6 | ERRORE | Scrivi solo errori ed errori fatali |
7 | FATALE | Scrivi solo errori fatali |
8 | SPENTO | Non scrivere messaggi nel registro |
Questi livelli vengono utilizzati durante il filtraggio dei messaggi. Se si imposta il livello di registrazione su WARN
, tutti i messaggi meno importanti di WARN
verranno eliminati: TRACE
, DEBUG
, INFO
. Se imposti il livello di filtraggio su FATAL
, allora even ERROR
.
Esistono altri due livelli di gravità che vengono utilizzati nel filtraggio: questo OFF
(elimina tutti i messaggi) e ALL
- scrivi tutti i messaggi (non elimina nulla).
4.2 Esempio di configurazione del registro
Diamo un'occhiata a un semplice esempio di configurazione del registro. Per fare ciò, abbiamo bisogno del file log4j.properties, che può essere posizionato nella cartella delle risorse. Aggiungiamo il seguente contenuto ad esso:
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
Qui nella primissima riga impostiamo il livello di registrazione - WARN
. Ciò significa che i messaggi scritti nel logger con lo stato DEBUG
verranno INFO
ignorati.
- Specifica quale tipo di appender useremo -
ConsoleAppender
- Specifica dove scriveremo il registro -
System.out
- Impostiamo la classe che controllerà il formato di registrazione -
PatternLayout
- Imposta il formato di registrazione per tutti i messaggi: data e ora
4.3 Errori di registrazione comuni
E un altro punto importante: errori popolari nella registrazione. Non ci sono molte opzioni per fare qualcosa, ma si possono identificare diversi errori comuni:
- Troppa registrazione . Non dovresti registrare ogni passaggio, che in teoria può essere importante. C'è una regola: i log possono caricare le prestazioni di non più del 10% . Altrimenti ci saranno problemi di prestazioni.
- Registrazione di tutti i dati in un unico file . Ciò renderà molto difficile la lettura/scrittura a un certo punto, per non parlare del fatto che ci sono limiti di dimensione dei file su alcuni sistemi.
- Utilizzo di livelli di registrazione errati . Ogni livello di registrazione ha confini chiari e dovrebbero essere rispettati. Se il confine è vago, puoi concordare quale livello utilizzare.
GO TO FULL VERSION