main
 1package log
 2
 3import (
 4	"net/http"
 5
 6	"github.com/rs/zerolog"
 7	"github.com/xlgmokha/x/pkg/mapper"
 8)
 9
10func HTTP(logger *zerolog.Logger) func(http.Handler) http.Handler {
11	return func(next http.Handler) http.Handler {
12		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
13			ctx := logger.WithContext(r.Context())
14
15			defer func() {
16				WithFields(ctx, mapper.MapFrom[*http.Request, Fields](r))
17				zerolog.Ctx(ctx).Print()
18			}()
19
20			next.ServeHTTP(w, r.WithContext(ctx))
21		})
22	}
23}