Warum strukturierte Logs?
Maschinenlesbares Logging
Warum strukturierte Logs? ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.
Logs, die Maschinen lesen können
Herkömmliche Logs sind frei formatierte Strings: "user 42 logged in from 1.2.3.4". Für Menschen sind sie leicht zu lesen, aber für Maschinen nur schwer abzufragen. Strukturiertes Logging gibt Schlüssel-Wert-Paare aus, sodass Log-Aggregatoren zuverlässig filtern und aggregieren können.
Das Problem mit String-Logs
Das Parsen von Freitext ist fehleranfällig:
- Formate verändern sich im Laufe der Zeit
- Reguläre Ausdrücke scheitern an Sonderfällen
- Sie können nicht einfach nach „allen Ereignissen, bei denen userID=42 gilt“ fragen
Strukturierte Logs machen jedes Feld zu einem erstklassigen, abfragbaren Attribut.
slog ist Teil der Standardbibliothek
Seit Go 1.21 befindet sich strukturiertes Logging in der Standardbibliothek im Paket log/slog. Sie benötigen keine externe Abhängigkeit.
import "log/slog"Ihr erstes strukturiertes Log
Der einfachste Aufruf protokolliert eine Nachricht zusammen mit Schlüssel-Wert-Attributen:
package main
import "log/slog"
func main() {
slog.Info("user logged in", "userID", 42, "ip", "1.2.3.4")
}Die Ausgabe lesen
Der Standard-Handler gibt ungefähr Folgendes aus:
2009/11/10 23:00:00 INFO user logged in userID=42 ip=1.2.3.4
Jedes Attribut ist ein eigenes key=value-Paar und kann direkt von Maschinen geparst werden.
Integrierte Level
slog wird mit vier Leveln ausgeliefert: Debug, Info, Warn und Error. Jedes akzeptiert eine Nachricht und abwechselnde Schlüssel-Wert-Attribute.
slog.Warn("disk almost full", "freePct", 5)
slog.Error("db connection failed", "attempt", 3)Schlüssel-Wert-Paare
Attribute werden als abwechselnde Argumente übergeben: Schlüssel, Wert, Schlüssel, Wert. Ein einzelnes ungerades Argument wird mit einer speziellen Markierung !BADKEY protokolliert. Achten Sie daher darauf, die Argumente paarweise zu übergeben.
slog.Info("order placed", "orderID", 1001, "total", 49.99)JSON für die Produktion
In der Produktion geben Sie normalerweise JSON aus, damit Log-Transporter (Loki, ELK, CloudWatch) Felder automatisch indizieren können. slog bietet dafür einen JSON-Handler, den Sie in der nächsten Lektion kennenlernen.
Vergleich mit dem alten log-Paket
Das klassische log-Paket gibt nur Strings aus. slog fühlt sich vertraut an, ergänzt aber Struktur, Level und austauschbare Handler, ohne dass Sie Ihre gesamte Codebasis auf einmal ändern müssen.
Wann sich Struktur auszahlt
Strukturiertes Logging zahlt sich besonders aus, wenn:
- Sie Logs aus vielen Services zentralisieren
- Sie Dashboards und Benachrichtigungen auf Basis von Feldern erstellen
- Sie Anfragen anhand einer ID miteinander verknüpfen müssen
Ausführbar: Strukturierte Ausgabe
Führen Sie dieses Beispiel aus, um strukturierte Attribute in der Standardausgabe zu sehen.
package main
import "log/slog"
func main() {
slog.Info("request handled",
"method", "GET",
"path", "/health",
"status", 200,
"ms", 12,
)
}Schnelltest
Testen Sie Ihr Verständnis von strukturiertem Logging.
Zusammenfassung
Sie haben gelernt, warum strukturierte Logs wichtig sind:
- Schlüssel-Wert-Attribute können von Maschinen abgefragt werden
log/slogist Teil der Standardbibliothek (Go 1.21+)- Integrierte Level: Debug, Info, Warn und Error
- Übergeben Sie Attribute als abwechselnde Schlüssel-Wert-Paare
Als Nächstes: Text- oder JSON-Handler auswählen.
Häufig gestellte Fragen
Ist die Lektion „Warum strukturierte Logs?“ kostenlos?
Ja — der vollständige Text von „Warum strukturierte Logs?“ 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 „Warum strukturierte Logs?“?
Maschinenlesbares Logging 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 1 von 4.
Wie lange dauert die Lektion „Warum strukturierte Logs?“?
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
- Warum strukturierte Logs?
- slog-Handler
- Log-Level und Attribute
- Benutzerdefinierte Handler