Commit 0b29f54
Changed files (5)
pkg/log/http.go
@@ -3,27 +3,21 @@ package log
import (
"net/http"
- "github.com/go-chi/chi/v5/middleware"
"github.com/rs/zerolog"
+ "github.com/xlgmokha/x/pkg/mapper"
)
func HTTP(logger *zerolog.Logger) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := logger.WithContext(r.Context())
- ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor)
defer func() {
- WithFields(ctx, Fields{
- "status": ww.Status(),
- "method": r.Method,
- "path": r.URL.Path,
- "remote_host": r.RemoteAddr,
- })
+ WithFields(ctx, mapper.MapFrom[*http.Request, Fields](r))
zerolog.Ctx(ctx).Print()
}()
- next.ServeHTTP(ww, r.WithContext(ctx))
+ next.ServeHTTP(w, r.WithContext(ctx))
})
}
}
pkg/log/init.go
@@ -0,0 +1,17 @@
+package log
+
+import (
+ "net/http"
+
+ "github.com/xlgmokha/x/pkg/mapper"
+)
+
+func init() {
+ mapper.Register[*http.Request, Fields](func(r *http.Request) Fields {
+ return Fields{
+ "method": r.Method,
+ "path": r.URL.Path,
+ "remote_host": r.RemoteAddr,
+ }
+ })
+}
pkg/log/log_test.go
@@ -69,9 +69,13 @@ func TestLog(t *testing.T) {
items, err := serde.FromJSON[map[string]interface{}](bufio.NewReader(&b))
require.NoError(t, err)
- assert.Equal(t, float64(http.StatusTeapot), items["status"])
+ require.Contains(t, items, "method")
assert.Equal(t, "GET", items["method"])
+
+ require.Contains(t, items, "path")
assert.Equal(t, "/", items["path"])
+
+ require.Contains(t, items, "remote_host")
assert.Contains(t, items["remote_host"], "127.0.0.1")
})
}
go.mod
@@ -3,7 +3,6 @@ module github.com/xlgmokha/x
go 1.18
require (
- github.com/go-chi/chi/v5 v5.2.1
github.com/google/jsonapi v1.0.0
github.com/rs/zerolog v1.34.0
github.com/stretchr/testify v1.8.1
go.sum
@@ -2,8 +2,6 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8=
-github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/google/jsonapi v1.0.0 h1:qIGgO5Smu3yJmSs+QlvhQnrscdZfFhiV6S8ryJAglqU=
github.com/google/jsonapi v1.0.0/go.mod h1:YYHiRPJT8ARXGER8In9VuLv4qvLfDmA9ULQqptbLE4s=