package observability import ( "log/slog" "os" "strings" ) // NewLogger returns a JSON logger with a stable service field so ECS logs from // different Go processes can be filtered without relying on container names. func NewLogger(service string) *slog.Logger { handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ AddSource: true, Level: parseLogLevel(os.Getenv("LOG_LEVEL")), }) return slog.New(handler).With("service", service) } func parseLogLevel(value string) slog.Level { switch strings.ToLower(strings.TrimSpace(value)) { case "debug": return slog.LevelDebug case "warn", "warning": return slog.LevelWarn case "error": return slog.LevelError default: return slog.LevelInfo } }