// Created on savesnippets.com ยท https://savesnippets.com/MM3IRXAMKJJHjl package main import ( "log/slog" "os" ) func main() { // Text handler for humans text := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelDebug}) logger := slog.New(text) logger.Info("user signed in", "user_id", 42, "ip", "10.0.0.1") logger.Warn("retrying", "attempt", 3, "max", 5) // JSON handler for machines (ELK, Loki, Datadog, etc.) j := slog.NewJSONHandler(os.Stdout, nil) jl := slog.New(j) jl.Info("event", "kind", "purchase", "amount_cents", 999) // {"time":"...","level":"INFO","msg":"event","kind":"purchase","amount_cents":999} // Common attributes attached to every log line requestLogger := slog.Default().With("request_id", "req-abc") requestLogger.Info("handling") requestLogger.Error("failed", "err", "timeout") // Make this the default logger app-wide: slog.SetDefault(slog.New(j)) }