Сделал для http запросов уровень логирования DEBUG

This commit is contained in:
2026-06-15 08:55:29 +03:00
parent e297f0fb84
commit 157f626c2e
2 changed files with 46 additions and 2 deletions
+19 -2
View File
@@ -13,6 +13,7 @@ import (
"net/http"
"net/url"
"strconv"
"strings"
"time"
"github.com/go-chi/chi/v5"
@@ -340,7 +341,9 @@ func errJSON(err error) map[string]string {
return map[string]string{"error": err.Error()}
}
// requestLogger пишет структурированный лог по каждому запросу.
// requestLogger пишет структурированный лог по каждому запросу. Частые
// служебные запросы (healthcheck, GET-страницы веб-UI с авто-рефрешем) пишем
// на DEBUG, чтобы не зашумлять INFO; мутации и REST API остаются на INFO.
func requestLogger(logger *slog.Logger) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -349,7 +352,7 @@ func requestLogger(logger *slog.Logger) func(http.Handler) http.Handler {
next.ServeHTTP(ww, r)
logger.Info("http request",
logger.Log(r.Context(), requestLogLevel(r), "http request",
"method", r.Method,
"path", r.URL.Path,
"status", ww.Status(),
@@ -360,3 +363,17 @@ func requestLogger(logger *slog.Logger) func(http.Handler) http.Handler {
})
}
}
// requestLogLevel понижает уровень для частых служебных запросов: healthcheck
// и GET-страницы веб-UI (список авто-рефрешится каждые 5 с). Мутации и REST
// API (`/api/...`) остаются на INFO.
func requestLogLevel(r *http.Request) slog.Level {
switch {
case r.URL.Path == "/healthz":
return slog.LevelDebug
case r.Method == http.MethodGet && !strings.HasPrefix(r.URL.Path, "/api"):
return slog.LevelDebug
default:
return slog.LevelInfo
}
}