package logging import ( "context" "log/slog" "os" "gitea.michaelthomson.dev/mthomson/habits/internal/middleware" ) type ContextHandler struct { slog.Handler } func (h *ContextHandler) Handle(ctx context.Context, r slog.Record) error { if requestID, ok := ctx.Value(middleware.TraceIdKey).(string); ok { r.AddAttrs(slog.String(string(middleware.TraceIdKey), requestID)) } return h.Handler.Handle(ctx, r) } func NewLogger() *slog.Logger { baseHandler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{AddSource: true}) customHandler := &ContextHandler{Handler: baseHandler} logger := slog.New(customHandler) return logger }