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.