La registrazione è la tecnica per conservare i record per scopi futuri nel ciclo di sviluppo del software. La registrazione è fondamentale perché i registri aiutano con il debug, la diagnostica, la risoluzione dei problemi e il monitoraggio del progetto.

Puoi utilizzare la registrazione a vari livelli delle tue applicazioni per errori, avvisi, debug e altro.

Accesso Vai

La libreria standard Go contiene un tronco d'albero pacchetto ricco di funzionalità. Gestisce vari livelli di registrazione e metodi di registrazione di base necessari per la tua applicazione. in ogni caso, il tronco d'albero pacchetto potrebbe non essere la scelta migliore se la tua app è complessa e vuoi dare la priorità alla produttività.

Il tronco d'albero il pacchetto non fornisce funzionalità per i log strutturati. I pacchetti di registrazione strutturati forniscono funzionalità che semplificano e migliorano il processo di registrazione. L'ecosistema Go ospita molti di questi pacchetti.

1. Zap di Uber

Zap è un pacchetto di registrazione veloce, strutturato e livellato creato dal team open source di Uber per la scrittura di log in Go. Uber ha creato il pacchetto Zap per fornire una registrazione più performante rispetto ad altri pacchetti nell'ecosistema Go, incluso il

instagram viewer
tronco d'albero pacchetto.

Ci sono due logger distinti nel pacchetto Zap. Il Logger la funzione gestisce i casi di prestazioni critiche. Il SugaredLogger offre maggiore flessibilità con la sua API in stile printf, ma presenta un piccolo compromesso in termini di prestazioni. Anche il pacchetto SugaredLogger più lento è 4-10 volte più veloce di altri pacchetti di registrazione strutturata.

Eseguire quanto segue su una riga di comando per installare il pacchetto Zap:

andare prendi - te andare.uber.org/zap

Avrai bisogno di una versione recente di Go per installare e utilizzare correttamente le funzionalità del pacchetto Zap.

logger, err := zap. Nuova produzione() // istanza del logger zap

Se ehm!= zero {
fmt. Println (err. Errore())
}

differire logger. Sincronizza() // svuota i buffer, se presenti
zucchero := taglialegna. Zucchero() //logger zuccherato qui

zucchero. Infow("Impossibile recuperare l'URL",
// Contesto strutturato come coppie chiave-valore digitate liberamente.
"URL", URL,
"tentativo", 3,
"arretramento", tempo. Secondo,
)

zucchero. Infof("Impossibile recuperare l'URL: %s", URL) // usando il formattatore di stile printf

Il logger variabile è un'istanza di zappare logger, e il zucchero il metodo è un'istanza di logger zuccherata.

Il Infow il metodo scrive nell'output e il Infof è la versione di formattazione di Infow metodo.

2. Il pacchetto Logrus

Logrus è un pacchetto di registrazione strutturato per le app Go. Logrus è compatibile con il logger di libreria standard, con funzionalità simili. Se hai esperienza nell'utilizzo di tronco d'albero pacchetto, troverai una suite che funziona con Logrus.

Logrus non supporta la formattazione JSON per impostazione predefinita. Ma puoi sempre usare una libreria JSON come quella integrata json pacchetto con Logrus' Imposta formatore metodo.

Logrus supporta la registrazione a diversi livelli e, sebbene non sia performante come la maggior parte dei pacchetti di registrazione, è ricco di funzionalità e sicuro.

Puoi usare questo comando per installare Logrus nella tua directory di lavoro:

andare ottenere github.com/sirupsen/logrus

Ecco un esempio di registrazione con il pacchetto Logrus.

importare (
"os"
log "github.com/sirupsen/logrus" // importazione alias
)

funzprincipale {
tronco d'albero. ImpostaFormattatore(&log. JSONFormatter{}) // imposta il formattatore su JSON
tronco d'albero. SetOutput (os. robusto) // output su output standard
tronco d'albero. SetLevel (log. Livello di avviso) // imposta il livello di avviso

tronco d'albero. WithFields (log. Campi{
"Nome": "John Doe",
"Età": 40,
}).Info("Dati biografici di Giovanni")
}

Questo codice importa la libreria Logrus e crea un alias denominato tronco d'albero. Nel principale funzione, chiama il Imposta formatore metodo per impostare un formattatore per i log. Puoi usare il Imposta uscita metodo per specificare dove devono andare i messaggi di registro; in questo caso, uscita standard.

Il Imposta livello il metodo registra gli avvisi nel livello specificato o superiore.

3. Pacchetto ZeroLog

ZeroLog è una libreria per la registrazione, veloce e dedicata a JSON ispirata a Zap, progettata per le prestazioni. Utilizza un'API di concatenamento univoca che consente a Zerolog di scrivere JSON e registrare eventi senza allocazioni e riflessioni.

Zerolog mira a fornire un'API più facile da usare e prestazioni più elevate pur mantenendo la base di codice e l'API semplici. Si concentra sulla registrazione strutturata ed è possibile utilizzare il file Console Writer metodo per accedere in modo carino alla tua console.

Ci sono allocazione bassa, registrazione livellata, campionamento, hook, campi contestuali e registrazione degli errori con funzionalità di traccia dello stack opzionali sul pacchetto Zerolog. Puoi anche integrare Zerolog con il contesto e http pacchi.

Esegui questo comando nel terminale del tuo spazio di lavoro per installare il file Zerolog pacchetto.

andare get -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)

Ecco un semplice esempio di utilizzo del pacchetto Zerolog per una semplice operazione.

importare (
"github.com/rs/zerolog" // zerolog per le configurazioni
"github.com/rs/zerolog/log" // log per la registrazione
)

funzprincipale() {
// UNIX Time è più veloce e più piccolo della maggior parte dei timestamp
zerolog. Formato campotempo = zerolog. TimeFormatUnix

tronco d'albero. Stampa("ciao mondo")
}

Il Formato campo ora l'opzione è impostata sul formato dell'ora Unix e l'opzione Stampa comando scrive l'argomento di testo nello standard output.

4. Il pacchetto Log15

Il Registro15 pacchetto è un semplice toolkit supponente per la registrazione leggibile dall'uomo e dalla macchina con le migliori pratiche in Go. Log15 modella il io e http pacchetti dalla libreria standard Go come alternativa al built-in tronco d'albero pacchetto.

Le caratteristiche del pacchetto Log15 includono:

  • un'API semplice e di facile comprensione
  • registrazione strutturata con coppie chiave-valore
  • registratori di bambini con contesto privato
  • interfaccia del gestore per la costruzione di configurazioni di registrazione personalizzate su una piccola API
  • supporto terminale colorato
  • supporto integrato per la registrazione di file, flussi, registri di sistema e registri di rete
  • record di buffer per l'output.

Puoi installare Registro15 ai tuoi pacchetti Go con questo comando.

andare ottenere github.com/inconshreveable/log15

È facile iniziare con il pacchetto Log15. Ecco un esempio di istanziazione di un logger e registrazione di informazioni e livelli di errore con il pacchetto.

importare (
log "github.com/inconshreveable/log15" // alias importa come log
)

funzprincipale() {
serverLog := registro. New("repository", "nuovo deposito") // creazione di un'istanza del logger
serverLog. Info("verifica dello stato del livello del repository riuscita") // registro delle informazioni
serverLog. Error ("controllo dello stato del livello del repository non riuscito") // registro errori
}

Il serverLog variabile è un'istanza del logger Log15; il Nuovo il metodo restituisce un logger con gli argomenti di contesto forniti.

Il Informazioni il metodo restituisce un messaggio informativo e il Errore il metodo restituisce un messaggio di errore.

Scrivi registri utili e comprensibili

La registrazione può essere fondamentale come qualsiasi altra parte del processo di sviluppo. Può sembrare molto facile nelle fasi iniziali, ma attenersi alle pratiche essenziali può complicare il processo. Per gestire ogni caso limite e aspetto della registrazione, è necessario utilizzare un pacchetto di registrazione per semplificare le cose.

Usa i livelli di registrazione, la struttura e il contesto per rendere i tuoi log comprensibili e adatti agli scopi previsti.