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}