Refactor logging: update request logging to use dynamic API version retrieval in Handle and HandleList methods

This commit is contained in:
alex
2025-06-25 18:03:10 +03:00
parent ef1efdd585
commit 9f7f046a07
3 changed files with 35 additions and 30 deletions

View File

@@ -70,14 +70,19 @@ func (s *GeneralServer) Handle(w http.ResponseWriter, r *http.Request) {
s.w = w s.w = w
s.r = r s.r = r
serverReqApiVer := chi.URLParam(r, "ver") serverReqApiVer := chi.URLParam(r, "ver")
log := s.log.With(
s.log.Info("Received request", slog.Group("request",
slog.String("remote", r.RemoteAddr), slog.String("version", serverReqApiVer),
slog.String("method", r.Method), slog.String("url", s.r.URL.String()),
slog.String("url", r.URL.String()), slog.String("method", s.r.Method),
slog.String("requested-version", serverReqApiVer), ),
slog.Group("connection",
slog.String("remote", s.r.RemoteAddr),
),
) )
s.log.Info("Received request")
if srv, ok := s.servers[serversApiVer(serverReqApiVer)]; ok { if srv, ok := s.servers[serversApiVer(serverReqApiVer)]; ok {
srv.Handle(w, r) srv.Handle(w, r)
return return
@@ -94,10 +99,7 @@ func (s *GeneralServer) Handle(w http.ResponseWriter, r *http.Request) {
} }
} }
s.log.Error("HTTP request error: unsupported API version", log.Error("HTTP request error: unsupported API version",
slog.String("remote", s.r.RemoteAddr),
slog.String("method", s.r.Method),
slog.String("url", s.r.URL.String()),
slog.Int("status", http.StatusBadRequest)) slog.Int("status", http.StatusBadRequest))
s.writeJSONError(http.StatusBadRequest, "unsupported API version") s.writeJSONError(http.StatusBadRequest, "unsupported API version")
} }
@@ -107,13 +109,19 @@ func (s *GeneralServer) HandleList(w http.ResponseWriter, r *http.Request) {
s.r = r s.r = r
serverReqApiVer := chi.URLParam(r, "ver") serverReqApiVer := chi.URLParam(r, "ver")
s.log.Info("Received request", log := s.log.With(
slog.String("remote", r.RemoteAddr), slog.Group("request",
slog.String("method", r.Method), slog.String("version", serverReqApiVer),
slog.String("url", r.URL.String()), slog.String("url", s.r.URL.String()),
slog.String("requested-version", serverReqApiVer), slog.String("method", s.r.Method),
),
slog.Group("connection",
slog.String("remote", s.r.RemoteAddr),
),
) )
log.Info("Received request")
if srv, ok := s.servers[serversApiVer(serverReqApiVer)]; ok { if srv, ok := s.servers[serversApiVer(serverReqApiVer)]; ok {
srv.HandleList(w, r) srv.HandleList(w, r)
return return
@@ -121,7 +129,7 @@ func (s *GeneralServer) HandleList(w http.ResponseWriter, r *http.Request) {
if slices.Contains(s.cfg.Layers, serverReqApiVer) { if slices.Contains(s.cfg.Layers, serverReqApiVer) {
if srv, ok := s.servers[serversApiVer(s.cfg.LatestVer)]; ok { if srv, ok := s.servers[serversApiVer(s.cfg.LatestVer)]; ok {
s.log.Info("Using latest version under custom layer", log.Info("Using latest version under custom layer",
slog.String("layer", serverReqApiVer), slog.String("layer", serverReqApiVer),
slog.String("fallback-version", s.cfg.LatestVer), slog.String("fallback-version", s.cfg.LatestVer),
) )
@@ -130,22 +138,19 @@ func (s *GeneralServer) HandleList(w http.ResponseWriter, r *http.Request) {
} }
} }
s.log.Error("HTTP request error: unsupported API version", log.Error("HTTP request error: unsupported API version",
slog.String("remote", s.r.RemoteAddr),
slog.String("method", s.r.Method),
slog.String("url", s.r.URL.String()),
slog.Int("status", http.StatusBadRequest)) slog.Int("status", http.StatusBadRequest))
s.writeJSONError(http.StatusBadRequest, "unsupported API version") s.writeJSONError(http.StatusBadRequest, "unsupported API version")
} }
func (s *GeneralServer) _errNotFound() { // func (s *GeneralServer) _errNotFound() {
s.writeJSONError(http.StatusBadRequest, "invalid request") // s.writeJSONError(http.StatusBadRequest, "invalid request")
s.log.Error("HTTP request error", // s.log.Error("HTTP request error",
slog.String("remote", s.r.RemoteAddr), // slog.String("remote", s.r.RemoteAddr),
slog.String("method", s.r.Method), // slog.String("method", s.r.Method),
slog.String("url", s.r.URL.String()), // slog.String("url", s.r.URL.String()),
slog.Int("status", http.StatusBadRequest)) // slog.Int("status", http.StatusBadRequest))
} // }
func (s *GeneralServer) writeJSONError(status int, msg string) { func (s *GeneralServer) writeJSONError(status int, msg string) {
s.w.Header().Set("Content-Type", "application/json") s.w.Header().Set("Content-Type", "application/json")

View File

@@ -15,7 +15,7 @@ func (h *HandlerV1) _handle() {
uuid16 := h.newUUID() uuid16 := h.newUUID()
log := h.log.With( log := h.log.With(
slog.Group("request", slog.Group("request",
slog.String("version", "v1"), slog.String("version", h.GetVersion()),
slog.String("url", h.r.URL.String()), slog.String("url", h.r.URL.String()),
slog.String("method", h.r.Method), slog.String("method", h.r.Method),
), ),

View File

@@ -15,7 +15,7 @@ func (h *HandlerV1) _handleList() {
uuid16 := h.newUUID() uuid16 := h.newUUID()
log := h.log.With( log := h.log.With(
slog.Group("request", slog.Group("request",
slog.String("version", "v1"), slog.String("version", h.GetVersion()),
slog.String("url", h.r.URL.String()), slog.String("url", h.r.URL.String()),
slog.String("method", h.r.Method), slog.String("method", h.r.Method),
), ),