Con il suo significato letterale dall’Oxford Dictionary, la parola “log” può essere definita come “una registrazione ufficiale di eventi durante un particolare periodo di tempo, specialmente un viaggio su una nave o un aereo”. Nell’ambito della programmazione, i programmatori usano questo termine anche per tenere un registro di eventi importanti e attività che sono importanti per il corretto funzionamento di un programma. L’attività o la creazione di un registro si chiama logging e gli strumenti per fare tale compito si chiamano logger.

Il registro è documentato in un file chiamato Log File. Nel termine di programmatore di computer, un file di log potrebbe essere descritto come

un file che mantiene un registro di eventi, processi, messaggi e comunicazioni tra varie applicazioni software comunicanti e il sistema operativo. I file di log sono presenti nel software eseguibile, nei sistemi operativi e nei programmi in cui vengono registrati tutti i messaggi e i dettagli del processo. Ogni file eseguibile produce un file di log dove vengono annotate tutte le attività.

– Technopedia

Un file di log è importante per noi programmatori per tenere traccia di eventi importanti per alcuni casi come il debug, la valutazione e il monitoraggio. In questo articolo, vorrei condividere un modo per creare un semplice pacchetto logger da implementare sul lato server con Golang.

Pacchetto logger in Golang

Il nostro codice inizia con la dichiarazione di una clausola di pacchetto chiamata “logger” e l’importazione dei pacchetti richiesti: “fmt”, “log”, “os” e “path/filepath”. Useremo due tipi di logger: Log comune e Log di errore. Il primo è usato per registrare eventi comuni come login, logout, dati recuperati, dati postati, ecc. D’altra parte, il secondo è usato per registrare specificamente eventi di errore. Nel suo nucleo, il nostro logger è costruito su un oggetto log. Quindi, creeremo due variabili “CommonLog” e “ErrorLog” (notare che la prima lettera è in maiuscolo per indicare che la variabile è esportata) con un puntatore alla struct del logger.

package loggerimport (
"fmt"
"log"
"os"
"path/filepath"
)var CommonLog *log.Loggervar ErrorLog *log.Logger

Prossimo, inizieremo il nostro logger. Iniziamo dichiarando il percorso del file. Lo facciamo puntando la posizione del nostro file di log usando il comando Abs dal pacchetto file path (in questo caso stiamo usando la posizione assoluta del file di log). Manteniamo poi il riferimento all’interno della variabile filePath.

All’interno della funzione init, continuiamo impostando il comando che verrà eseguito quando il file di log verrà aperto dal programma (questa impostazione è referenziata all’interno della variabile openLogfile). Lo facciamo con il comando “OpenFile” del pacchetto “os” specificando il percorso del file (usando la nostra variabile “filePath” oltre al nome del file), i flag e il fileMode. In questa parte dobbiamo anche decidere il nome del file di log; in questo articolo, nominiamo il file di log come log.log (notare l’estensione log). Particolare attenzione ai flags e al fileMode utilizzati nella funzione. In questo caso, i flag possono essere descritti come indicatori che dicono al programma cosa fare con il file aperto. A tal fine, usiamo la costante predefinita del pacchetto “os”:

  • os.0_RDWR = aprire il file in lettura-scrittura
  • os.0_CREATE = creare un nuovo file se non esiste
  • os.0_APPEND = aggiunge dati al file in scrittura

Mentre il fileMode “0666” è il codice per impostare il permesso di Default file per modificare il file (ulteriori letture sul permesso utente possono essere viste qui).

Inoltre, riscriveremo la nostra variabile CommonLog e ErrorLog per contenere un nuovo log. Lo facciamo con il comando “New” del pacchetto “log” specificando 1) il canale per il file di log, 2) un prefisso e 3) i flag richiesti.

  1. Canale per il file di log: qui usiamo la nostra variabile openLogfile
  2. Prefix: Questo è l’identificatore del nostro log. Potremmo usare una stringa personalizzata per definire il tipo di lof (ad esempio “CommonLogger” o “ErrorLogger”)
  3. Flags: I flags per questa funzione denotano le informazioni che vogliamo avere nel nostro log. Per questo scopo, usiamo la funzione incorporata dal pacchetto log in Go (i dettagli possono essere visti qui).

Iniezione del Logger nel nostro codice

Infine, potremmo iniettare il nostro logger per registrare eventi importanti che stanno accadendo nel nostro programma. Questo può essere fatto usando il comando “Prinln” come quello che abbiamo usato con il pacchetto “fmt”.

Qui nel file di log, il risultato del logger avrà la forma seguente:

E’ FATTO!

Quindi, questo è tutto ragazzi! abbiamo creato un pacchetto logger che può essere facilmente iniettato come dipendenza nel nostro programma Go. Speriamo che possa essere utile a voi colleghi programmatori.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.