From 506834c88157a2f9737b569f3e8f1693a099098f Mon Sep 17 00:00:00 2001 From: mStar Date: Sun, 4 May 2025 19:28:03 +0200 Subject: [PATCH] Extend logging middleware with more config options --- http/zerolog.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/http/zerolog.go b/http/zerolog.go index 61cec54..249baa3 100644 --- a/http/zerolog.go +++ b/http/zerolog.go @@ -5,19 +5,36 @@ import ( "strings" "time" + "github.com/rs/zerolog" "github.com/rs/zerolog/hlog" "github.com/rs/zerolog/log" ) -func BuildLoggingMiddleware(extras map[string]string) HandlerBuilder { +func BuildLoggingMiddleware( + status500IsError bool, + ignorePaths []string, + extras map[string]string, +) HandlerBuilder { return func(h http.Handler) http.Handler { return ChainMiddlewares(h, hlog.NewHandler(log.Logger), hlog.AccessHandler(func(r *http.Request, status, size int, duration time.Duration) { - if strings.HasPrefix(r.URL.Path, "/assets") { - return + for _, p := range ignorePaths { + if strings.HasPrefix(r.URL.Path, p) { + return + } } - logger := hlog.FromRequest(r).Info(). + var logger *zerolog.Event + if status >= 500 { + if status500IsError { + logger = hlog.FromRequest(r).Error() + } else { + logger = hlog.FromRequest(r).Warn() + } + } else { + logger = hlog.FromRequest(r).Info() + } + logger = logger. Str("method", r.Method). Stringer("url", r.URL). Int("status", status).