Elenco degli appendici
Il logger consente di salvare i dati in più file contemporaneamente. Tali flussi di dati di output sono chiamati appender (da append). Ci sono alcuni appender standard, quindi tratteremo solo quelli più popolari:
Appenders | Descrizione | |
---|---|---|
1 | Consolle | Stampa i dati sulla console |
2 | File | Emette i dati in un file |
3 | DailyRollingFile | Emette i dati in un file, il file viene sovrascritto ciclicamente |
4 | asincrono | Consente di scrivere i dati in un altro appender in modo asincrono |
5 | PRESA | Scrive i dati in un socket specifico |
6 | JDB | Scrive messaggi nel database utilizzando il protocollo JDBC |
7 | APP | Scrive messaggi nel database utilizzando il protocollo JPA |
8 | http | Invia eventi tramite protocollo HTTP a un server remoto |
9 | SMTP | Memorizza i messaggi in un buffer, quindi li invia come e-mail |
Una buona documentazione per tutti gli appenders è sul loro sito ufficiale
E di seguito considereremo il più popolare e semplice di loro.
ConsoleAppender
L'appender più semplice èConsoleApender
. Come avrai intuito, scrive semplicemente i suoi messaggi alla console. Ha diversi parametri interessanti per noi:
Attributi | ||
---|---|---|
1 | nome | Nome appendice |
2 | filtro | Consente di filtrare alcuni messaggi |
3 | disposizione | Specifica la formattazione dei messaggi durante l'output |
4 | bersaglio | Specifica dove scrivere: SYTEM_OUT oSYSTEM_ERR |
È molto facile configurarlo:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
FileAppender
L'appender più utile èFileAppender
. A differenza ConsoleAppender
di lui scrive i suoi messaggi su un file. Il che è molto utile quando la tua applicazione è in esecuzione da qualche parte sul server. Ha molti parametri, perché deve essere in grado di scrivere file su diversi sistemi operativi.
Ma considereremo solo il più popolare di loro.
1 | nome | Specifica il nome dell'appender |
2 | filtro | Consente di filtrare alcuni messaggi |
3 | disposizione | Specifica la formattazione dei messaggi durante l'output |
4 | nome del file | Specifica il nome del file dove scrivere i messaggi |
5 | aggiungere | Se true , i messaggi verranno aggiunti al vecchio registro, se false - il file di registro verrà ricreato ogni volta che l'applicazione viene avviata. |
6 | dimensione buffer | Imposta la dimensione del buffer in byte |
7 | immediateFlash | Se true , ogni messaggio viene effettivamente scritto su disco immediatamente (senza buffer). Il registro inizia a funzionare lentamente, ma questo ti evita di perdere dati quando il programma si arresta in modo anomalo. |
Sai già come lavorare bene con i file, quindi queste impostazioni non sono una novità per te. La configurazione di un tale logger è ancora più semplice di un logger della console:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
RollingFileAppender
L'appender più popolare èRollingFileAppender
. A differenza di FileAppender
esso, ti consente di suddividere il registro in tanti piccoli file. Questo è molto importante per i registri di grandi dimensioni. Inoltre, ti consente di impostare regole su cosa fare con i vecchi file dopo che è iniziata la scrittura di quelli nuovi.
E questo appender ha quasi un centinaio di impostazioni diverse. Puoi saperne di più su di loro al link .
Considera gli attributi più popolari di questo appender:
Attributi | ||
---|---|---|
1 | nome | Specifica il nome dell'appender |
2 | filtro | Consente di filtrare alcuni messaggi |
3 | disposizione | Specifica la formattazione dei messaggi durante l'output |
4 | nome del file | Specifica il nome del file dove scrivere i messaggi |
5 | filePattern | Specifica un modello di denominazione per i file di archivio che non vengono più scritti |
6 | politica | Specifica la condizione in cui il file dovrebbe iniziare a essere sovrascritto |
7 | strategia | Descrive cosa fare con i vecchi file: archivio, cronologia per quanti giorni conservare, ecc. |
Ecco un buon esempio:
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
Il parametro filePattern
specifica un modello per gli archivi dei vecchi log. Ce ne sono anche due, quando attivato, verrà scritto un nuovo file:
TimeBasedTriggeringPolicy
– funzionerà se inizia un nuovo giorno (la data corrente cambia)SizeBasedTriggeringPolicy
– funzionerà se la dimensione del file raggiunge i 250 MB