bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Log4J ed il rolling file

Chiunque lavori con la piattaforma Java conosce sicuramente Log4J e sa di poter scrivere i propri log indifferentemente su console o su file (e non solo...).

Esiste un interessante appender aggiuntivo di Log4J che effettua un roll del file molto specifico; prima di proseguire diciamo subito che questo appender non viene fornito con la distribuzione standard, ma conl'ApacheExtras Companion scaricabile da:http://logging.apache.org/log4j/companions/extras/.

Una volta inseriti tutti i JAR nel classpath della propria applicazione, è possibile definire il nuovo appender all'interno del file di configurazione log4j.xml, come di seguito:

<appender name="rollinglogfile"
          class="org.apache.log4j.rolling.RollingFileAppender">
  <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
    <param name="ActiveFileName" value="logs/output.log"/>
    <param name="FileNamePattern" value="logs/output.%d.log.gz"/>
  </rollingPolicy>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
             value="[%p] %d{dd MMM HH:mm:ss.SSS} %t [%c] %m%n"/>
  </layout>
</appender>

La cosa interessante di questo appender è contenuta all'interno della rollingPolicy, ossia della politica con cui viene effettuato il rolling del file, e si identifica nei 2 parametri:

  • ActiveFileName, rappresenta il nome del file corrente ossia il file su cui Log4J scrive in un determinato momento;
  • FileNamePattern, rappresenta il pattern da utilizzare per i file di log che devono essere archiviati.

L'utilizzo di entrambi i parametri favorisce il disaccoppiamento dei file di log, ma il vero punto di forza è rappresentato dal parametro FileNamePattern.

Innanzitutto è possibile indicare all'appender di comprimere i file archiviati semplicemente inserendo il suffisso .gz o .zip nel pattern.

Infine, attraverso appositi placeholder, è possibile stabilire le tempistiche di archiviazione:

  • %d, rappresenta un rolling giornaliero che scatta a mezzanotte e genera la stringa yyyy-MM-dd;
  • %d{yyyy-MM}, rappresenta invece un rolling mensile e genera la stringa yyyy-MM.

Nel caso specifico dell'esempio avremo che Log4J salva tutte le informazioni all'interno del file output.log, ma allo scoccare della mezzanotte il file viene compresso in output.2011-05-16.log.gz ed un nuovo file output.log viene creato; e così via giorno dopo giorno.

Precedente
Commenti
Nessun commento. Vuoi essere il primo.