Registro Fiber
Possiamo utilizzare i log per osservare il comportamento del programma, diagnosticare problemi o configurare avvisi corrispondenti. Definire un registro ben strutturato può migliorare l'efficienza della ricerca e agevolare la gestione dei problemi.
Fiber fornisce un modo predefinito per stampare i log sull'output standard. Fornisce anche diverse funzioni globali, come log.Info
, log.Errorf
e log.Warnw
.
Livelli di Log
const (
LevelTrace Level = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
LevelFatal
LevelPanic
)
Log Personalizzato
Fiber fornisce l'interfaccia AllLogger
per adattarsi a diverse librerie di logging.
type CommonLogger interface {
Logger
FormatLogger
WithLogger
}
type AllLogger interface {
CommonLogger
ControlLogger
WithLogger
}
Stampare i Log
Nota: Chiamare i metodi a livello Fatal
interromperà l'esecuzione del programma dopo aver stampato il log. Si prega di usare con cautela. La stampa diretta dei log a livelli diversi verrà inserita nella messageKey
e di default è impostata su msg
.
log.Info("Ciao, Mondo!")
log.Debug("Stai bene?")
log.Info("42 è la risposta alla vita, all'universo e a tutto")
log.Warn("Siamo sotto attacco!")
log.Error("Houston, abbiamo un problema.")
log.Fatal("Addio, e Grazie per tutto il pesce.")
log.Panic("Il sistema è giù.")
Formattazione e stampa dei log a livelli diversi, tutti i metodi terminano con f
.
log.Debugf("Ciao %s", "ragazzo")
log.Infof("%d è la risposta alla vita, all'universo e a tutto", 233)
log.Warnf("Siamo sotto attacco %s!", "capo")
log.Errorf("%s, abbiamo un problema.", "Maestro Shifu")
log.Fatalf("Addio, e Grazie per tutto la %s.", "banana")
Stampa dei messaggi con chiavi e valori. Se le chiavi e i valori non sono abbinati, verrà stampato KEYVALS UNPAIRED
.
log.Debugw("", "Ciao", "ragazzo")
log.Infow("", "numero", 233)
log.Warnw("", "lavoro", "capo")
log.Errorw("", "nome", "Maestro Shifu")
log.Fatalw("", "frutto", "banana")
Log Globale
Se si desidera utilizzare solo una semplice funzione di log in un progetto e stamparla globalmente in qualsiasi momento, forniamo un log globale.
import "github.com/gofiber/fiber/v2/log"
log.Info("info")
log.Warn("avviso")
Il codice precedente utilizza il log.DefaultLogger
predefinito per l'output standard. È inoltre possibile trovare adattatori già implementati nella cartella contrib
, o utilizzare il proprio Logger
implementato e impostare il logger globale utilizzando log.SetLogger
.
import (
"log"
fiberlog "github.com/gofiber/fiber/v2/log"
)
var _ log.AllLogger = (*customLogger)(nil)
type customLogger struct {
stdlog *log.Logger
}
// ...
// Iniettare il logger personalizzato
fiberlog.SetLogger(customLogger)
Impostare il Livello
log.SetLevel
imposta i log che sono inferiori a questo livello e non verranno stampati. Il registratore di log predefinito è LevelTrace
.
Si noti che questo metodo non è concorrenza sicuro.
import "github.com/gofiber/fiber/v2/log"
log.SetLevel(log.LevelInfo)
Impostare l'Output
log.SetOutput
imposta la destinazione di output per il logging. Di default, il logger stampa i log sulla console.
var logger AllLogger = &defaultLogger{
stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
depth: 4,
}
Imposta la destinazione di output su un file.
// Output sul file test.log
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return
}
log.SetOutput(f)
Imposta la destinazione di output sia sulla console che su un file.
// Output sul file test.log
file, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
iw := io.MultiWriter(os.Stdout, file)
log.SetOutput(iw)
Collegamento al contesto
Imposta il contesto e utilizza il seguente metodo per restituire un'istanza di CommonLogger
collegata al contesto specificato.
commonLogger := log.WithContext(ctx)
commonLogger.Info("info")
Nota: Questa è la libreria di logging predefinita per il framework Fiber. Naturalmente, puoi scegliere altre librerie di logging open-source ben note per Go.