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_OUToSYSTEM_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 ConsoleAppenderdi 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 FileAppenderesso, 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 filePatternspecifica 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
GO TO FULL VERSION