0Pricing
Go Academy · Lektion

slog-Handler

Text- und JSON-Handler

slog-Handler ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Handler bestimmen das Format

In slog ruft ein Logger einen Handler auf, um jeden Datensatz zu formatieren und zu schreiben. Wenn Sie den Handler austauschen, ändert sich das Ausgabeformat, ohne dass Sie Ihre Log-Aufrufe anpassen müssen.

TextHandler

slog.NewTextHandler schreibt menschenfreundliche Zeilen im Format key=value. Das eignet sich gut für die lokale Entwicklung und Terminals.

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 gibt pro Zeile ein JSON-Objekt aus. Das ist ideal für Produktions-Log-Pipelines.

package main

import (
    "log/slog"
    "os"
)

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

Einen Logger erstellen

slog.New(handler) verpackt einen Handler in einen Logger. Auf dieser Instanz rufen Sie logger.Info, logger.Error usw. auf.

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

HandlerOptions

Das zweite Argument des Handler-Konstruktors ist *slog.HandlerOptions. Übergeben Sie nil für die Standardwerte oder konfigurieren Sie Level und Quellposition.

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

In eine Datei oder einen Buffer schreiben

Handler akzeptieren jeden io.Writer. Sie können in eine Datei, in einen Buffer für Tests oder nach stdout schreiben. Diese Entkopplung ist ein zentraler Designgedanke von slog.

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

Den Standard-Logger festlegen

slog.SetDefault(logger) sorgt dafür, dass die Funktionen auf Paketebene (slog.Info usw.) Ihren Handler verwenden. Legen Sie ihn einmal beim Start fest.

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

Text- und JSON-Ausgabe

Der gleiche Aufruf in zwei Formaten:

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

Einen Handler auswählen

Als Faustregel gilt:

  • Lokal/Entwicklung: TextHandler (gut lesbar)
  • Produktion/Aggregation: JSONHandler (gut parsbar)

Treffen Sie die Auswahl über eine Umgebungsvariable, damit sich dasselbe Binary anpassen kann.

Eine wiederverwendbare Einrichtung schreiben

Zentralisieren Sie die Erstellung des Loggers, damit die gesamte Anwendung dieselbe Konfiguration verwendet.

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

Ausführbar: Handler wechseln

Dieses Programm protokolliert dasselbe Ereignis über beide Handler, damit Sie die Formate vergleichen können.

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")
}

Schnelltest

Testen Sie Ihr Verständnis der slog-Handler.

Zusammenfassung

Sie haben slog-Handler kennengelernt:

  • Handler formatieren und schreiben Datensätze; der Logger ruft sie auf
  • NewTextHandler für Menschen, NewJSONHandler für Maschinen
  • Handler akzeptieren jeden io.Writer und *HandlerOptions
  • slog.SetDefault verbindet die Funktionen auf Paketebene

Häufig gestellte Fragen

Ist die Lektion „slog-Handler“ kostenlos?

Ja — der vollständige Text von „slog-Handler“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „slog-Handler“?

Text- und JSON-Handler Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „slog-Handler“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum strukturierte Logs?
  2. slog-Handler
  3. Log-Level und Attribute
  4. Benutzerdefinierte Handler
← Zurück zu Go Academy