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.