Journal des fibre

Nous pouvons utiliser des journaux pour observer le comportement du programme, diagnostiquer des problèmes ou configurer des alertes correspondantes. Définir un journal bien structuré peut améliorer l'efficacité de la recherche et faciliter le traitement des problèmes.

Fiber fournit un moyen par défaut d'imprimer des journaux sur la sortie standard. Il fournit également plusieurs fonctions globales, telles que log.Info, log.Errorf et log.Warnw.

Niveaux de journal

const (
    LevelTrace Level = iota
    LevelDebug
    LevelInfo
    LevelWarn
    LevelError
    LevelFatal
    LevelPanic
)

Journal personnalisé

Fiber fournit l'interface AllLogger pour s'adapter à diverses bibliothèques de journaux.

type CommonLogger interface {
    Logger
    FormatLogger
    WithLogger
}

type AllLogger interface {
    CommonLogger
    ControlLogger
    WithLogger
}

Impression des journaux

Remarque : Appeler des méthodes à un niveau Fatal interrompra l'exécution du programme après l'impression du journal. Veuillez utiliser avec prudence. L'impression directe de journaux à différents niveaux sera entrée dans la messageKey et par défaut définie sur msg.

log.Info("Bonjour tout le monde !")
log.Debug("Çava ?")
log.Info("42 est la réponse à la vie, à l'univers et à tout")
log.Warn("Nous sommes attaqués !")
log.Error("Houston, nous avons un problème.")
log.Fatal("Adieu, et merci pour tout le poisson.")
log.Panic("Le système est hors service.")

Formatage et impression des journaux à différents niveaux, toutes les méthodes se terminent par f.

log.Debugf("Bonjour %s", "garçon")
log.Infof("%d est la réponse à la vie, à l'univers et à tout", 233)
log.Warnf("Nous sommes attaqués %s !", "patron")
log.Errorf("%s, nous avons un problème.", "Maître Shifu")
log.Fatalf("Adieu, et merci pour %s.", "la banane")

Impression de messages avec des clés et des valeurs. Si les clés et les valeurs ne sont pas appariées, KEYVALS UNPAIRED sera imprimé.

log.Debugw("", "Bonjour", "garçon")
log.Infow("", "nombre", 233)
log.Warnw("", "travail", "patron")
log.Errorw("", "nom", "Maître Shifu")
log.Fatalw("", "fruit", "banane")

Journal global

Si vous souhaitez utiliser uniquement une fonction de journal simple dans un projet et l'imprimer globalement à tout moment, nous fournissons un journal global.

import "github.com/gofiber/fiber/v2/log"

log.Info("info")
log.Warn("avertissement")

Le code ci-dessus utilise le log.DefaultLogger par défaut pour la sortie standard. Vous pouvez également trouver des adaptateurs déjà implémentés dans le dossier contrib, ou utiliser votre propre Logger implémenté et définir le journal global en utilisant log.SetLogger.

import (
    "log"
    fiberlog "github.com/gofiber/fiber/v2/log"
)

var _ log.AllLogger = (*customLogger)(nil)

type customLogger struct {
    stdlog *log.Logger
}

// ...
// Injecter un journal personnalisé
fiberlog.SetLogger(customLogger)

Configuration du niveau

log.SetLevel définit les journaux qui sont inférieurs à ce niveau et ne seront pas produits en sortie. L'enregistreur de journal par défaut est LevelTrace.

Veuillez noter que cette méthode n'est pas sûre pour la concurrence.

import "github.com/gofiber/fiber/v2/log"

log.SetLevel(log.LevelInfo)

Configuration de la sortie

log.SetOutput définit la destination de sortie pour la journalisation. Par défaut, le journalimprime les journaux sur la console.

var journal AllLogger = &defaultLogger{
    stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
    depth:  4,
}

Définir la destination de sortie sur un fichier.

// Sortie vers le fichier 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)

Définir la destination de sortie à la fois sur la console et sur un fichier.

// Sortie vers le fichier 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)

Contexte de liaison

Définissez le contexte et utilisez la méthode suivante pour renvoyer une instance de CommonLogger liée au contexte spécifié.

commonLogger := log.WithContext(ctx)
commonLogger.Info("info")

Remarque : Il s'agit de la bibliothèque de journalisation par défaut pour le framework Fiber. Bien sûr, vous pouvez choisir d'autres bibliothèques de journalisation open-source bien connues pour Go.