lunedì 10 dicembre 2007

L'importanza di loggare

Visto che sto cercando il modo migliore per utilizzare il package java.util.logging (JUL) per il mio progetto u4j2rsf, spendo due secondi per sottolineare l'importanza di usare una infrastruttura di logging all'interno delle applicazioni.

Da tempo ormai uso log4j per java e devo dire che mi trovo davvero bene. Ho usato anche commons logging ed ora sto provando ad usare direttamente il package JUL, già incluso nella jdk.

Il concetto alla base è il seguente: nel codice inserisco dei comandi di questo framework per tracciarne l'esecuzione e verificare il contenuto degli oggetti o delle variabili centrali su cui si svolge l'esecuzione del programma.

Questi comandi definiscono una priorità, per esempio log4j ha trace, debug, info, warning, error e critical, il JUL usa altri termini: finest, finer, fine, config info, warning e severe, ma il concetto è lo stesso.
In base ad un file di configurazione, posso decidere fino a quali messaggi stampare, per cui in fase di sviluppo vorrò leggere almeno i debug, se non proprio i trace, mentre in produzione posso limitarmi ai warning, in caso di problemi posso abbassare la priorità e monitorare meglio i file di log.

Ma ovviamente non finisce qui la questione: posso definire diverse destinazioni per i log. Per esempio posso stamparli in console, su file o addirittura (log4j) spedirli via mail.

Framework del genere esistono per tutti i linguaggi (pure javascript, per intenderci..), non appesantiscono più di tanto l'esecuzione del programma ma rendono la fase di debug meno stressante e, secondo me, l'attività di log è un fattore importante per valutare la qualità di un software.

Nessun commento: