Impostazione livelli di logging

Da wiki.maggioli.it.
Jump to navigation Jump to search

La finestra di impostazione livelli di logging permette di creare e manipolare i logger (vedi dopo per una definizione di logger).

L'interfaccia visualizza tutti i logger attivi nell'intero sistema. Tali logger sono degli override rispetto al livello di logging impostato nel file logging.properties della macchina virtuale. Pertanto, se non e' attivo un logger specifico, vale il livello di logging impostato nel file di properties.

Cosa e' un Logger

In sostanza un logger è una combinazione di un nome, un livello ed uno scope.

  • nome: indica l'argomento del logging. In generale è il nome di una classe java presente nell'applicativo. L'applicativo deve prevedere un logger con tale nome e stampare messaggi di informazione/debug con tale logger, a vari livelli di importanza. Se l'applicativo non prevede un logger non sarà possibile ottenere alcun risultato.
  • livello: indica quanto specifica debba essere l'informazione loggata. SEVERE indica di loggare solo i messaggi più importanti mentre FINEST indica di loggare qualsiasi tipo di messaggio, anche il più dettagliato. Tipicamente il livello FINEST produce moltissimo log, pertanto è necessario utilizzarlo con cautela.
  • scope: indica a quali sessioni di lavoro applicare l'impostazione (vedi dopo per dettagli).

Scope di un Logger

Se si effettua il logging su un sistema che ospita più database e molti utenti che stanno lavorando per ogni database, è necessario selezionare per quali sessioni di lavoro generare i log al fine di evitare una produzione di log esagerata che risulta in alcuni casi impossibile da interpretare.

  • Sessione corrente: causa la generazione di log solamente per la sessione corrente. Se l'utente corrente effettua dei login lato server (generando nuove sessioni) queste non vengono loggate.
  • Utente corrente: causa la generazione di log per tutte le sessioni dell'utente corrente, sia quella interattiva che eventuali altre sessioni lato server.
  • Utente: come il caso precedente ma è possibile definire un utente applicativo scegliendolo tra quelli disponibili nel database.
  • Utente J2EE corrente: effettua il logging per tutte le sessioni relative all'utente j2EE corrente (quindi tutti gli utenti applicativi del database corrente)

Per ragioni di sicurezza non è permesso creare logger per utenti J2EE diversi da quello con cui si è connessi al sistema, ma è possibile rimuoverne di preesistenti qualora questi creassero problemi.

  • Globale: effettua il logging per tutte le sessioni di tutti i database (dettagli nel paragrafo "Efficacia degli scope").

Efficacia degli scope

Lo scope Globale ha effetto su tutto il codice eseguito dal server mentre gli altri scope più specifici hanno effetto solamente per il codice che effettua il logging tramite le API della suite. Pertanto se si ha necessità di loggare le operazioni eseguite da librerie di terze parti installate nel sistema, l'unica possibilità è Globale.

Creare un nuovo Logger

Per aggiungere un logger alla lista dei logger attivi è necessario crearlo, specificando per prima cosa il nome.

E' possibile digitare il nome completo nel box Nuovo logger oppure si può utilizzare il pulsante Recenti che mostra una lista degli ultimi logger creati nel sistema. Il pulsante Recenti è disponibile fintanto che il box Nuovo logger è vuoto. Se invece il box contiene un testo, il tasto si commuta in Cerca. Premendolo si effettua una ricerca tra i logger che attualmente sono stati caricati (registrati) nella memoria del server. Pertanto è possibile che un logger che si sa esistere non venga trovato perché il server è stato appena riavviato e il logger in oggetto non è ancora stato utilizzato (registrato) dall'applicativo. In questo caso è sempre possibile sfruttare i Recenti oppure digitare manualmente l'intero nome nel box.

Nota: E' possibile cercare utilizzando le wildcard * e ?, in particolare se queste non vengono utilizzate all'inizio o alla fine del testo di ricerca per comodità viene internamente preposta e anteposta la wildcard *.

Esiste anche la possibilità di digitare degli shortcut per i vari moduli applicativi. Digitando il prefisso di applicazione e premendo tab, tale prefisso si espande nel package dell'applicativo. A quel punto è possibile premere il pulsante di ricerca per vedere tutti i logger attualmente registrati nel sistema sotto quel package.

Una volta specificato il nome, è necessario specificare lo scope nel campo combo successivo. Di default lo scope è Utente corrente in quanto rappresenta la scelta più bilanciata. Scelto lo scope, premendo il pulsante Crea viene creato il nuovo logger e questo compare nella lista dei logger attivi.

Modificare un Logger

I nuovi logger vengono creati con i livelli di logging client e server pari a quanto definito nei file logging.properties delle rispettive macchine client e server, in modo che la loro creazione non alteri lo stato delle cose. A questo punto è possibile modificare i livelli di logging cliccando sulle celle da modificare.

Nota: I valori modificati vengono applicati immediatamente, non c'è pulsante di salvataggio.

Nota: Creando più logger con lo stesso nome e scope differenti si potrà notare che il livello di logging lato client è condiviso tra tutti loro. Questo perchè il livello di logging lato client ha un unico scope, che è appunto quello client. Modificando il livello di logging client su un logger, tutti gli altri logger con il medesimo nome verranno aggiornati di conseguenza.

E' anche possibile specificare un valore mnemonico per il logger. In tal caso il valore viene preposto ai messaggi stampati sulla console server, facilitandone l'individuazione. Il valore non viene stampato sulla console client in quanto non necessario (il client non è condiviso tra più sessioni di lavoro)

Nota: Per applicare il valore mnemonico è necessario terminare la modifica della cella della tabella premendo TAB, INVIO oppure cliccando in un'altra cella. Finchè non viene terminata la modifica il valore mnemonico non verrà stampato.

Altri valori come il nome o lo scope non sono modificabili, è necessario creare un nuovo logger con un altro nome/scope se necessario.

Influenza dei Logger nelle elaborazioni in corso

Per la natura tecnica del meccanismo degli scope, i nuovi logger (o le modifiche a logger) con scope Sessione, Utente o Utente J2EE verranno recepite dagli algoritmi lato server solamente quando l'algoritmo attraversa una frontiera di chiamata remota o locale (EJB) in quanto è in quella fase che le strutture dati vengono aggiornate nella sessione di lavoro.

L'unico scope con effetti immediati è lo scope Globale, che agisce più a basso livello e non necessita delle sovrastrutture degli altri scope.

Rimuovere un Logger attivo

Per rimuovere un logger è sufficiente cancellarlo dalla lista.con l'apposito pulsante della tabella o con un click di destro del mouse sulla riga.

Nota: Non è necessario reimpostare il livello di logging al valore originario. Il sotto sistema di logging si prende l'onere di ripristinare automaticamente i livelli originali.

Rimozione automatica dei logger di sessione

Per i logger legati ad una specifica sessione di lavoro, la rimozione avviene automaticamente entro trenta secondi dalla terminazione della sessione stessa. E' comunque possibile rimuoverli manualmente senza terminare la sessione, come per tutti gli altri logger.

Codifica a colori

Vengono utilizzati dei codici di colore per indicare il livello di "pericolosità" di un logger.

Ad esempio, un livello FINEST viene indicato in rosso in quanto probabilmente genererà molto testo sulla console.

Uno scope GLobale verrà indicato in rosso per lo stesso motivo di cui sopra.

Gli scope a livello di Sessione e di Utente J2EE vengono indicati in giallo in quanto nel primo caso potrebbero non essere stampate tutte le righe di log che potrebbero interessare, mentre nel secondo caso si tratta comunque di una generazione massiva di informazioni, anche se non a livello di Globale (sempre che siano installati più database/utenti J2EE nel server corrente).