Files
lingniu-vehicle-ingest/go/vehicle-gateway/internal/observability/logger.go

31 lines
728 B
Go

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