Go Academy · Leçon

Niveaux et attributs des journaux

Ajouter du contexte aux journaux

Leçon 3 sur 413 étapes

Niveaux et attributs des journaux est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Ajouter du contexte aux journaux

Un message brut vous indique ce qui s’est passé ; les attributs vous donnent les détails qui rendent les journaux exploitables : quel utilisateur, quelle requête et combien de temps l’opération a pris.

Les quatre niveaux

Les niveaux de slog, du moins élevé au plus élevé en gravité :

  • Debug (-4)
  • Info (0)
  • Warn (4)
  • Error (8)

Les niveaux sont des entiers ; vous pouvez donc en définir de personnalisés entre ceux-ci.

Filtrer par niveau

Définissez un niveau minimal dans HandlerOptions. Les enregistrements de niveau inférieur sont écartés à faible coût.

package main

import (
    "log/slog"
    "os"
)

func main() {
    opts := &slog.HandlerOptions{Level: slog.LevelWarn}
    logger := slog.New(slog.NewTextHandler(os.Stdout, opts))
    logger.Info("ignored")
    logger.Warn("shown")
}

Attributs typés

En plus des arguments clé-valeur souples, slog propose des constructeurs typés qui évitent les erreurs et sont plus rapides :

  • slog.String("k", v)
  • slog.Int("k", v)
  • slog.Bool("k", v)
  • slog.Duration("k", d)
slog.Info("done", slog.String("phase", "build"), slog.Int("files", 12))

Pourquoi utiliser des attributs typés

Les attributs typés détectent à la compilation le problème du « nombre impair d’arguments » et permettent au gestionnaire d’éviter la réflexion. Préférez-les dans les chemins critiques.

Regrouper les attributs

slog.Group imbrique les champs associés sous une même clé.

slog.Info("req",
    slog.Group("http",
        slog.String("method", "GET"),
        slog.Int("status", 200),
    ),
)

Logger.With pour un contexte partagé

logger.With(...) renvoie un enregistreur enfant qui ajoute les mêmes attributs à chaque message. C’est idéal pour un identifiant de requête.

reqLog := logger.With("requestID", "abc-123")
reqLog.Info("started")
reqLog.Info("finished")

Journalisation avec contexte

Les variantes *Context (par exemple InfoContext) transportent un context.Context, ce qui permet aux gestionnaires d’extraire les identifiants de trace.

slog.InfoContext(ctx, "handling", "path", "/api")

Niveaux dynamiques

Utilisez un slog.LevelVar pour modifier le niveau à l’exécution (par exemple, le passer à Debug lors de l’analyse d’un incident) sans redémarrer l’application.

var lvl slog.LevelVar
lvl.Set(slog.LevelInfo)
h := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: &lvl})
// later: lvl.Set(slog.LevelDebug)

Erreurs comme attributs

Ajoutez les erreurs comme attributs afin qu’elles puissent être interrogées, plutôt que de les concaténer au message.

slog.Error("save failed", slog.String("err", err.Error()), slog.Int("retry", 2))

Exécutable : niveaux et With

Ce programme filtre par niveau et utilise un enregistreur enfant avec un contexte partagé.

package main

import (
    "log/slog"
    "os"
)

func main() {
    opts := &slog.HandlerOptions{Level: slog.LevelInfo}
    base := slog.New(slog.NewTextHandler(os.Stdout, opts))
    req := base.With("requestID", "r-7")
    req.Debug("hidden")
    req.Info("processing", slog.Int("items", 3))
}

Vérification rapide

Vérifiez votre compréhension des niveaux et des attributs.

Récapitulatif

Vous avez découvert les niveaux et les attributs :

  • Quatre niveaux intégrés ; filtrez avec HandlerOptions.Level
  • Les attributs typés (slog.String, slog.Int) sont plus sûrs et plus rapides
  • slog.Group imbrique les champs ; logger.With partage le contexte
  • LevelVar permet de modifier les niveaux à l’exécution
Gratuit pour commencer

Apprends Go avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
51
Leçons
203

Questions Fréquemment Posées

La leçon « Niveaux et attributs des journaux » est-elle gratuite ?

Oui — le texte complet de « Niveaux et attributs des journaux » 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 « Niveaux et attributs des journaux » ?

Ajouter du contexte aux journaux 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 3 sur 4.

Combien de temps prend la leçon « Niveaux et attributs des journaux » ?

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