Attivare e registrare informazioni un singolo file di log

Da Gambas-it.org - Wikipedia.

(Questa pagina è stata redatta da kicco, membro del forum gambas-it.org)


Per creare log di registrazione delle attività è necessario attivare il componente gb.logging.

Si possono creare così molti oggetti logger che permettono di ottenere la gestione di differenti log, anche contemporaneamente.

In questo semplice esempio si istanzierà un unico log nel quale verranno registrati i messaggi associati ad un livello di informazione.

Creazione del log e sua attivazione:

Public mylogger As Logger

Public Sub Form_Open()

mylogger = New Logger(4, Null, "~/Logger.txt")                 ' istanzia il log
mylogger.Begin()                                               ' lo attiva

End
I parametri di inizializzazione (4, Null, "~/LOG/Logger.txt") sono

livello, intestazione della riga , path e nome del log.

I livelli possono essere
  • CRITICAL = 0
  • ERROR = 1
  • WARNING = 2
  • INFO = 3
  • DEBUG = 4
ed hanno ordine prioritario, se uso 4, tutti i messaggi di valore inferiore verranno registrati, viceversa se userò 2, verranno registrati solo i messaggi Warning, Error e Critical (2,1 e 0).
Questo può essere utile durante le fasi di sviluppo e debug per filtrare man mano i messaggi.
Intestazione della riga
Ogni registrazione è intestabile con differenti informazioni. Usando NULL, si accetta il formato standard.
Il formato standard è ($now),($levelname),($callLocation)e ($Message).
I criteri di formattazione si trovano nell'help della classe Logger.Format (vedi wiki).
Path e nome del file.
È l'indicazione completa della posizione del file di log.

Per registrare un messaggio nel log si può usare questa sintassi, ma si vedrà che nel codice: Esempio di gestione di un log semplice proposto più sotto, ne esistono altri analoghi.

mylogger.Log("sono passato di qua", 4)

È necessario porre attenzione al livello perché, se il livello della registrazione è maggiore di quello usato per la dichiarazione del log, il messaggio non verrà registrato.

Un interessante classe del componente gb.logging è LogRotator, che permette la rotazione dei file di log provvedendo ad un rename automatico.

LogRotator.Rotate("~/Logger.txt")

La rotazione del log consiste nella numerazione automatica del nome del file, In quseto caso dopo la rotazione il file Logger.txt diventa Logger.0.txt e successivamente Logger.1.txt.


Un'altra interessante classe è LogRotator.should che è in grado di verificare se un file di log ha superato una data dimensione.

Dim bol As Boolean

bol = LogRotator.shouldRotate("~/LOG/Logger.txt", 1000)

Verifica se un file di log ha superato una certa dimensione. In questo caso la dimensione è 1000 cioè 1kB che, se viene superata commuta il valore della variabile bol in TRUE.


Esempio di gestione di un log semplice

Public mylogger As Logger

Public Sub Form_Open()

mylogger = New Logger(4, Null, "~/Logger.txt")          ' Istanzia il log
mylogger.Begin()                                        ' Lo attiva

End

Public Sub Button1_Click()

Dim bol As Boolean

mylogger.Log("testo info", Logger.Info)                 ' Tre modi differenti di scrivere il messaggio di log
mylogger("testo warning", Logger.warning)
mylogger.Log("sono passato di qua", 4)

bol = LogRotator.shouldRotate("~/Logger.txt", 1000)     'Controlla lo stato della variabile booleana
If bol = True Then                                      ' Verifica se è cambiato
  Print "SUPERATO"                                        ' Se è cambiato scrive in consolle
  LogRotator.Rotate("~/Logger.txt")                       ' Se è cambiato ruota il log
Else
  Print "NON SUPERATO"                                    ' Se non è cambiato scrive in consolle
Endif
mylogger = New Logger(4, Null, "~/Logger.txt")          ' Istanzia un nuovo log
mylogger.Begin()                                        ' Attiva il nuovo log

End