0Pricing
Go Academy · Leçon

Gestionnaires slog

Gestionnaires de texte et de JSON

Gestionnaires slog est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Les gestionnaires déterminent le format

Dans slog, un enregistreur appelle un gestionnaire pour formater et écrire chaque enregistrement. Remplacer le gestionnaire modifie le format de sortie sans toucher à vos appels de journalisation.

TextHandler

slog.NewTextHandler écrit des lignes key=value faciles à lire pour les humains. C’est adapté au développement local et aux terminaux.

package main

import (
    "log/slog"
    "os"
)

func main() {
    h := slog.NewTextHandler(os.Stdout, nil)
    logger := slog.New(h)
    logger.Info("hello", "env", "dev")
}

JSONHandler

slog.NewJSONHandler émet un objet JSON par ligne. C’est idéal pour les chaînes de traitement des journaux en production.

package main

import (
    "log/slog"
    "os"
)

func main() {
    h := slog.NewJSONHandler(os.Stdout, nil)
    logger := slog.New(h)
    logger.Info("hello", "env", "prod")
}

Créer un enregistreur

slog.New(handler) enveloppe un gestionnaire dans un enregistreur. Vous appelez logger.Info, logger.Error, etc. sur cette instance.

logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))

HandlerOptions

Le deuxième argument du constructeur d’un gestionnaire est *slog.HandlerOptions. Transmettez nil pour utiliser les valeurs par défaut, ou configurez le niveau et l’emplacement dans le code source.

opts := &slog.HandlerOptions{
    Level:     slog.LevelDebug,
    AddSource: true,
}
h := slog.NewJSONHandler(os.Stdout, opts)

Écrire dans un fichier ou un tampon

Les gestionnaires acceptent n’importe quel io.Writer. Vous pouvez journaliser dans un fichier, dans un tampon pour les vérifications ou vers la sortie standard. Ce découplage est un principe de conception essentiel de slog.

f, _ := os.Create("app.log")
logger := slog.New(slog.NewJSONHandler(f, nil))

Définir l’enregistreur par défaut

slog.SetDefault(logger) fait utiliser votre gestionnaire aux fonctions du package (slog.Info, etc.). Définissez-le une seule fois au démarrage.

slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("now JSON by default")

Sortie texte ou JSON

Le même appel, deux formats :

  • Texte : time=... level=INFO msg=hello env=dev
  • JSON : {"time":"...","level":"INFO","msg":"hello","env":"dev"}

Choisir un gestionnaire

Règle générale :

  • Local ou développement : TextHandler (lisible)
  • Production ou agrégation : JSONHandler (analysable)

Décidez à l’aide d’une variable d’environnement afin que le même binaire puisse s’adapter.

Écrire une configuration réutilisable

Centralisez la création de l’enregistreur afin que toute l’application partage une même configuration.

func newLogger(prod bool) *slog.Logger {
    if prod {
        return slog.New(slog.NewJSONHandler(os.Stdout, nil))
    }
    return slog.New(slog.NewTextHandler(os.Stdout, nil))
}

Exécutable : changer de gestionnaire

Ce programme journalise le même événement avec les deux gestionnaires afin que vous puissiez comparer les formats.

package main

import (
    "log/slog"
    "os"
)

func main() {
    text := slog.New(slog.NewTextHandler(os.Stdout, nil))
    js := slog.New(slog.NewJSONHandler(os.Stdout, nil))
    text.Info("login", "user", "ada")
    js.Info("login", "user", "ada")
}

Vérification rapide

Vérifiez votre compréhension des gestionnaires slog.

Récapitulatif

Vous avez découvert les gestionnaires de slog :

  • Les gestionnaires formatent et écrivent les enregistrements ; l’enregistreur les appelle
  • NewTextHandler pour les humains, NewJSONHandler pour les machines
  • Les gestionnaires acceptent n’importe quel io.Writer et *HandlerOptions
  • slog.SetDefault relie les fonctions du package

Questions Fréquemment Posées

La leçon « Gestionnaires slog » est-elle gratuite ?

Oui — le texte complet de « Gestionnaires slog » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Gestionnaires slog » ?

Gestionnaires de texte et de JSON Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Gestionnaires slog » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi utiliser des journaux structurés
  2. Gestionnaires slog
  3. Niveaux et attributs des journaux
  4. Gestionnaires personnalisés
← Retour à Go Academy