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
NewTextHandlerfür Menschen,NewJSONHandlerfür Maschinen- Handler akzeptieren jeden
io.Writerund*HandlerOptions slog.SetDefaultverbindet 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.