logger.go

 1package middleware
 2
 3import (
 4	"log/slog"
 5	"net/http"
 6
 7	"git.kilimanjaro.io/rtw/pkg/log"
 8)
 9
10// Logger embeds a canonical logger in the request context
11func Logger(next http.Handler) http.Handler {
12	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
13		l := log.NewDefault()
14		next.ServeHTTP(w, r.WithContext(log.ToContext(r.Context(), l)))
15		if err := log.Emit(l); err != nil {
16			slog.Error("error emitting canonical log line", "err", err)
17		}
18	})
19}