Fiber-Protokoll
Logs können genutzt werden, um das Verhalten des Programms zu beobachten, Probleme zu diagnostizieren oder entsprechende Warnmeldungen zu konfigurieren. Durch die Definition eines gut strukturierten Protokolls kann die Sucheffizienz verbessert und die Fehlerbehebung erleichtert werden.
Fiber bietet eine Standardmethode zum Drucken von Protokollen auf die Standardausgabe. Außerdem bietet es mehrere globale Funktionen wie log.Info
, log.Errorf
und log.Warnw
.
Protokollstufen
const (
LevelTrace Level = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
LevelFatal
LevelPanic
)
Individuelles Protokoll
Fiber bietet die AllLogger
-Schnittstelle an, um sich an verschiedene Protokollbibliotheken anzupassen.
type CommonLogger interface {
Logger
FormatLogger
WithLogger
}
type AllLogger interface {
CommonLogger
ControlLogger
WithLogger
}
Protokolle drucken
Hinweis: Das Aufrufen von Methoden auf Fatal
-Ebene unterbricht die Programmablauf nach dem Drucken des Protokolls. Bitte verwenden Sie dies mit Vorsicht. Das direkte Drucken von Protokollen auf verschiedenen Ebenen wird in den messageKey
und standardmäßig auf msg
gesetzt.
log.Info("Hallo, Welt!")
log.Debug("Geht es dir gut?")
log.Info("42 ist die Antwort auf das Leben, das Universum und alles")
log.Warn("Wir werden angegriffen!")
log.Error("Houston, wir haben ein Problem.")
log.Fatal("So Long, und Danke für den ganzen Fisch.")
log.Panic("Das System ist ausgefallen.")
Formatierung und Drucken von Protokollen auf verschiedenen Ebenen - alle Methoden enden mit f
.
log.Debugf("Hallo %s", "Junge")
log.Infof("%d ist die Antwort auf das Leben, das Universum und alles", 233)
log.Warnf("Wir werden angegriffen %s!", "Chef")
log.Errorf("%s, wir haben ein Problem.", "Meister Shifu")
log.Fatalf("So Long, und Danke für den %s.", "Banane")
Drucken von Nachrichten mit Schlüsseln und Werten. Falls die Schlüssel und Werte nicht zugeordnet sind, wird KEYVALS UNPAIRED
gedruckt.
log.Debugw("", "Hallo", "Junge")
log.Infow("", "Nummer", 233)
log.Warnw("", "Aufgabe", "Chef")
log.Errorw("", "Name", "Meister Shifu")
log.Fatalw("", "Frucht", "Banane")
Globales Protokoll
Wenn Sie in einem Projekt nur eine einfache Protokollfunktion verwenden und es global jederzeit drucken möchten, bieten wir ein globales Protokoll an.
import "github.com/gofiber/fiber/v2/log"
log.Info("Info")
log.Warn("Warnung")
Der obige Code verwendet log.DefaultLogger
für die Standardausgabe. Sie können auch Adapter finden, die bereits im contrib
-Ordner implementiert sind, oder Ihren eigenen implementierten Logger
verwenden und den globalen Logger mit log.SetLogger
setzen.
import (
"log"
fiberlog "github.com/gofiber/fiber/v2/log"
)
var _ log.AllLogger = (*customLogger)(nil)
type customLogger struct {
stdlog *log.Logger
}
// ...
// Benutzerdefinierten Logger einfügen
fiberlog.SetLogger(customLogger)
Ebene festlegen
log.SetLevel
setzt die Protokolle, die niedriger als diese Ebene sind und nicht ausgegeben werden. Der Standard-Protokollaufzeichner ist LevelTrace
.
Bitte beachten Sie, dass diese Methode nicht parallelitätssicher ist.
import "github.com/gofiber/fiber/v2/log"
log.SetLevel(log.LevelInfo)
Ausgabe setzen
log.SetOutput
setzt das Ausgabeziel für die Protokollierung. Standardmäßig druckt der Logger Protokolle auf die Konsole.
var logger AllLogger = &defaultLogger{
stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
depth: 4,
}
Setzen des Ausgabeziels auf eine Datei.
// Ausgabe in die Datei 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)
Setzen des Ausgabeziels sowohl auf die Konsole als auch auf eine Datei.
// Ausgabe in die Datei 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)
Bind Kontext
Setzen Sie den Kontext und verwenden Sie die folgende Methode, um eine CommonLogger
-Instanz an den angegebenen Kontext zu binden.
commonLogger := log.WithContext(ctx)
commonLogger.Info("info")
Hinweis: Dies ist die Standard-Logging-Bibliothek für das Fiber-Framework. Natürlich können Sie auch andere bekannte Go Open-Source-Logging-Bibliotheken wählen.