|
In questo file configureremo le funzionalità che dovrà avere LOG4J. LOG4J infatti consente allo sviluppatore di poter definire una serie di settaggi più o meno complessi. Noi in questa sezione andremo ad analizzare i settagli più importanti, attraverso il seguente esempio: 1 #### Utilizza due differenti flussi per il Log log4j.rootCategory=debug, stdout, R 2 # Stampo solo i messaggi con priorità WARN o più alto per categoria log4j.category.your.category.name=WARN # Specifico inherit per il livello di priorità #log4j.category.your.category.name=INHERITED 3 #### Prima scrittura sulla console di Tomcat log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 4 # Pattern che deve avere l’output log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 5 #### Secondo append sul file in cui vado a scrivere log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log 6 # Controlli sulla grandezza del file log4j.appender.R.MaxFileSize=100KB # Numero di Backup dei fileslog4j.appender.R.MaxBackupIndex=1 7 # Pattern che deve avere l’output sul file log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n Ho numerato i vari pezzi di codice per comodità di lettura e descrizione. Cominciamo quindi con la loro descrizione: E’ praticamente l’elemento di partenza di Log4j. Vado a impostare innanzitutto il livello di errore che voglio gestire: Debug per i messaggi di debugging Info per i messaggi di tipo “verbose” Warn per i messaggi di warning Error per i messaggi di errore che si verificano in esecuzione Fatal per gli errori gravi che determinano la caduta del sistema Log per i messaggi di log All invece per gestire tutti i messaggi. Con gli elementi dopo la virgola (rispettivamente stdout ed R vado a indicare invece i due output in cui andrà a scrivere i messaggi log4j. STDOUT sta per Standard Output ed indirizzeremo il flusso a monitor (standard) mentre con R vado a definire l’output su file. Configuro la categoria dei messaggi che voglio visualizzare ed il livello di priorità; Vado a indicare il tipo di output ed il tipo di pattern. In questo caso come tipo di output abbiamo scelto il ConsoleApplender che individua come flusso quello di default (a monitor). Ne possiamo però utilizzare anche altri: FileAppender per scrivere in append su di un file; RollingFileAppender che mi permette di definire invece un file di default con una sua grandezza massima (100 Kb nel punto 6) e una volta raggiunta tale dimensione ne crea un secondo e così via cancellando quelli più vecchi. Indichiamo anche infatti il numero massimo di files di backup (vedi MaxBackupIndexnel punto 6); DailyRollingFileAppender è come il precedentesolo che fa un discorso di tipo giornaliero (per esempio 2 files al giorno) salvando i files di log anche con la data del salvataggio. Con la seconda riga invece si stabilisce il tipo di Layout che desidero impostare per il log. Anche in questo caso abbiamo una vasta scelta: PatternLayout in cui bisogna indicare successivamente uno schema di visualizzazione (punto 4) con cui voglio le informazioni; HTMLLayout che produce un layout in pagina HTML; XMLLayout produce invece un layout di tipo XML; TTCCLayout altro tipo ancora di layout. Vado a configurare con conversionPattern lo schema con cui settare il pattern per visualizzare i messaggi. In particolare: %5p indica il tpo di priorità del messaggio (WARN, DEBUG, ecc.); [%t] indica il nome del thread che ha generato il messaggio; %F nome del file da cui è partita la chiamata; %L numero di linea che ha prodotto l’output; %m Mio eventuale messaggio; %n new line (a capo); %c Categoria che ha scatenato il log. Procedo come nel punto 3, solo che questa volta l’output viene indirizzato su di un file come specificato nella seconda riga; Definisco gli attributi del RollingFileAppender ovvero le dimensioni del file, ed il numero dei files di backup di cui deve tener traccia; Stabilisco anche per il file, il tipo di pattern e successivamente il formato che dovrà avere così come indicato nel punto 4. Osservazione: come ho spiegato precedentemente sono innumerevoli gli elementi che possono essere configurati nel file di properties , ma quelli da me utilizzati e descritti nel file di esempio sono sicuramente i più utili e ci permetteranno di lavorare al meglio.
|