Que fait golang-samber-slog ?
Extensions de journalisation structurée pour Golang utilisant les paquets samber/slog-**** — pipelines multi-gestionnaires (slog-multi), échantillonnage de logs (slog-sampling), formatage d'attributs (slog-formatter), middleware HTTP (slog-fiber, slog-gin, slog-chi, slog-echo), et routage backend (slog-datadog, slog-sentry, slog-loki, slog-syslog, slog-logstash, slog-graylog...). À appliquer lors de l'utilisation ou de l'adoption de slog, ou lorsque la base de code importe déjà un paquet github.com/samber/slog-*.
Introduction
Ce skill regroupe les extensions de logging pour Go, conçues pour fonctionner avec la bibliothèque standard log/slog. Il offre des outils pour construire des pipelines de gestionnaires, échantillonner les logs, formater les attributs, ajouter des middlewares HTTP, et router les logs vers divers backends.
Utilisation
Lorsque l'agent détecte l'utilisation de log/slog ou l'import d'un paquet github.com/samber/slog-*, il peut proposer automatiquement d'appliquer ces extensions. Les fonctionnalités incluent :
- Multi-handler pipelines: Combinez plusieurs gestionnaires de logs avec
slog-multi. - Échantillonnage de logs: Réduisez le volume de logs avec
slog-sampling. - Formatage d'attributs: Personnalisez le format des attributs de logs avec
slog-formatter. - Middleware HTTP: Intégrez le logging dans vos applications Fiber, Gin, Chi ou Echo.
- Routage backend: Envoyez les logs vers Datadog, Sentry, Loki, Syslog, Logstash, Graylog, etc.
Exemple
package main
import (
"log/slog"
"github.com/samber/slog-multi"
"github.com/samber/slog-datadog"
)
func main() {
// Créer un gestionnaire multi-backend
logger := slog.New(
slogmulti.Fanout(
slog.NewJSONHandler(os.Stdout, nil),
slogdatadog.Option{ApiKey: "..."}.NewDatadogHandler(),
),
)
logger.Info("Hello, world!")
}
Ressources
- Documentation officielle de
log/slog: https://pkg.go.dev/log/slog - Paquets
samber/slog-*: https://github.com/samber/slog