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 diffrenti 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 sitassi, 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