From 71702002cfdad4cf4a55a92c03ac660903a65744 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sun, 13 Oct 2024 16:10:22 +0200 Subject: feat(logger): implement optional body logging --- pkg/logger/middleware.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'pkg/logger/middleware.go') diff --git a/pkg/logger/middleware.go b/pkg/logger/middleware.go index d0a6a65..54cca96 100644 --- a/pkg/logger/middleware.go +++ b/pkg/logger/middleware.go @@ -8,7 +8,7 @@ import ( "time" ) -func Middleware(next http.Handler) http.Handler { +func Middleware(next http.Handler, recordBody bool) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Method == "GET" && r.URL.Path == "/healthz" { next.ServeHTTP(w, r) @@ -29,7 +29,7 @@ func Middleware(next http.Handler) http.Handler { path := r.URL.Path query := r.URL.RawQuery - bw := newBodyWriter(w) + bw := newBodyWriter(w, recordBody) next.ServeHTTP(bw, r) @@ -45,8 +45,12 @@ func Middleware(next http.Handler) http.Handler { responseAttributes := []slog.Attr{ slog.Time("time", end.UTC()), slog.Duration("latency", end.Sub(start)), + slog.Int("length", bw.bytes), slog.Int("status", bw.status), } + if recordBody { + responseAttributes = append(responseAttributes, slog.String("body", bw.body.String())) + } attributes := []slog.Attr{ { Key: "request", -- cgit v1.2.3