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