Differenze tra le versioni di "Impostazione livelli di logging"

Da wiki.maggioli.it.
Jump to navigation Jump to search
imported>Root
imported>Root
Riga 1: Riga 1:
La finestra di impostazione livelli di logging permette di creare e manipolare i logger (vedi dopo per una definizione di logger).  
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.  
L'interfaccia visualizza tutti i logger attivi nell'intero sistema. Tali logger sono degli override rispetto al livello di logging impostato nel file <code>logging.properties</code> 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 ==
== Cosa e' un Logger ==
In sostanza un logger è una combinazione di un nome, un livello ed uno scope.
In sostanza un logger è una combinazione di un <code>nome</code>, un <code>livello</code> ed uno <code>scope</code>.
* 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 loggare messaggi di debug con tale logger, a vari livelli di importanza. Se l'applicativo non prevede un logger, non sarà possibile ottenere alcun risultato.
* <code>nome</code>: 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 deve 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.
* <code>livello</code>: indica quanto specifica debba essere l'informazione loggata. <code>SEVERE</code> indica di loggare solo i messaggi più importanti mentre <code>FINEST</code> indica di loggare qualsiasi tipo di messaggio, anche il più dettagliato. Tipicamente il livello <code>FINEST</code> produce moltissimo log, pertanto è necessario utilizzarlo con cautela.
* scope: indica a quali sessioni di lavoro applicare l'impostazione (vedi dopo per dettagli).  
* <code>scope</code>: indica a quali sessioni di lavoro applicare l'impostazione ''(vedi dopo per dettagli)''.  


==== Scope di un Logger ====
==== 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.
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.
* <code>Sessione corrente</code>: 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.
* <code>Utente corrente</code>: 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.
* <code>Utente</code>: come il caso precedente ma è possibile definire un utente applicativo scegliendolo tra quelli disponibili nel database.
* j2ee corrente: effettua il logging per tutte le sessioni relative all'utente j2ee corrente (quindi tutti gli utenti applicativi del database corrente)
* <code>Utente J2EE corrente</code>: effettua il logging per tutte le sessioni relative all'utente j2EE corrente (quindi tutti gli utenti applicativi del database corrente)
* globale: effettua il logging per tutte le sessioni di tutti i database.
* <code>Globale</code>: effettua il logging per tutte le sessioni di tutti i database ''(dettagli nel paragrafo "Efficacia degli scope")''.


== Creare un nuovo Logger ==
== Creare un nuovo Logger ==
Per aggiungere un logger alla lista dei logger attivi è necessario crearlo, specificando per prima cosa il nome.
Per aggiungere un logger alla lista dei logger attivi è necessario crearlo, specificando per prima cosa il <code>nome</code>.


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 nella memoria del server. Pertanto è possibile che un logger che si sa essere disponibile non venga trovato perchè il server è stato appena riavviato e il logger in oggetto non è ancora stato utilizzato dall'applicativo. In questo caso è sempre possibile sfruttare i recenti oppure digitare manualmente l'intero nome nel box.
E' possibile digitare il nome completo nel box <code>Nuovo logger</code> oppure si può utilizzare il pulsante <code>Recenti</code> che mostra una lista degli ultimi logger creati nel sistema. Il pulsante <code>Recenti</code> è disponibile fintanto che il box <code>Nuovo logger</code> è vuoto. Se invece il box contiene un testo, il tasto si commuta in <code>Cerca</code>. 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.


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.
Esiste anche la possibilità di digitare degli shortcut per i vari moduli applicativi. Digitando il prefisso di applicazione e premendo <code>tab</code>, 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 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.
Una volta specificato il <code>nome</code>, è necessario specificare lo <code>scope</code> nel campo combo successivo. Di default lo scope è <code>Utente corrente</code> in quanto rappresenta la scelta più bilanciata. Scelto lo <code>scope</code>, premendo il pulsante <code>Crea</code> viene creato il nuovo logger e questo compare nella lista dei logger attivi.


== Modificare un Logger ==
== 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.
I nuovi logger vengono creati con i livelli di logging client e server pari a quanto definito nei file <code>logging.properties</code> 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.


E' anche possibile specificare un valore mnemonico per il logger. In tal caso il valore viene preposto ai messaggi stampati sulla console client o server, facilitandone l'individuazione.
'''''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.''


Altri valori come il nome o lo scope non sono modificabili, è necessario creare un nuovo logger con un altro nome/scope se necessario.
E' anche possibile specificare un valore <code>mnemonico</code> 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)
 
Altri valori come il <code>nome</code> o lo <code>scope</code> non sono modificabili, è necessario creare un nuovo logger con un altro <code>nome</code>/<code>scope</code> se necessario.


== Rimuovere un Logger attivo ==
== Rimuovere un Logger attivo ==
Per rimuovere un logger è sufficiente cancellarlo dalla lista. 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.
Per rimuovere un logger è sufficiente cancellarlo dalla lista.con l'apposito pulsante della tabella o con un click di destro del mouse sulla riga ''(attenzione che un qualsiasi click sul livello di logging mostra sempre e comunque la scelta di un nuovo livello)''.
 
'''''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.''


== 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".
Lo scope <code>Globale</code> 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 <code>API</code> della suite. Pertanto se si ha necessità di loggare le operazioni eseguite da librerie di terze parti installate nel sistema, l'unica possibilità è <code>Globale</code>.
 
== Codifica a colori ==
Vengono utilizzati dei codici di colore per indicare il livello di "pericolosità" di un logger.
 
Ad esempio, un livello <code>FINEST</code> viene indicato in rosso in quanto probabilmente genererà molto testo sulla console.
 
Uno scope <code>GLOBALE</code> verrà indicato in rosso per lo stesso motivo di cui sopra.
 
Gli scope a livello di <code>sessione</code> e di <code>utente J2EE</code> 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 <code>GLOBALE</code> (sempre che siano installati più database/utenti J2EE nel server corrente).

Versione delle 11:28, 19 ott 2017

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)
  • Globale: effettua il logging per tutte le sessioni di tutti i database (dettagli nel paragrafo "Efficacia degli scope").

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.

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: 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)

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

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 (attenzione che un qualsiasi click sul livello di logging mostra sempre e comunque la scelta di un nuovo livello).

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.

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.

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).