Attivare e registrare informazioni un singolo file di log
(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 a 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