From 9bfae69ccf3c17d795ee1bc75a3423b7f5c96717 Mon Sep 17 00:00:00 2001 From: sneak Date: Thu, 8 Jan 2026 13:05:10 -0800 Subject: [PATCH] Fix logging: add response_bytes to middleware, cache_key to handler - Middleware now tracks and logs bytes written via response_bytes - Handler logs cache_key for cache hit debugging - Changed "served encrypted image" to "image served" (only URL is encrypted) --- internal/handlers/imageenc.go | 3 ++- internal/middleware/middleware.go | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/internal/handlers/imageenc.go b/internal/handlers/imageenc.go index c93b79f..1ba4b73 100644 --- a/internal/handlers/imageenc.go +++ b/internal/handlers/imageenc.go @@ -91,7 +91,8 @@ func (s *Handlers) HandleImageEnc() http.HandlerFunc { // Log completion duration := time.Since(start) - s.log.Info("served encrypted image", + s.log.Info("image served", + "cache_key", imgcache.CacheKey(req), "host", req.SourceHost, "path", req.SourcePath, "format", req.Format, diff --git a/internal/middleware/middleware.go b/internal/middleware/middleware.go index a0b5515..2625608 100644 --- a/internal/middleware/middleware.go +++ b/internal/middleware/middleware.go @@ -58,11 +58,12 @@ func ipFromHostPort(hp string) string { type loggingResponseWriter struct { http.ResponseWriter - statusCode int + statusCode int + bytesWritten int64 } func newLoggingResponseWriter(w http.ResponseWriter) *loggingResponseWriter { - return &loggingResponseWriter{w, http.StatusOK} + return &loggingResponseWriter{ResponseWriter: w, statusCode: http.StatusOK} } func (lrw *loggingResponseWriter) WriteHeader(code int) { @@ -70,6 +71,13 @@ func (lrw *loggingResponseWriter) WriteHeader(code int) { lrw.ResponseWriter.WriteHeader(code) } +func (lrw *loggingResponseWriter) Write(b []byte) (int, error) { + n, err := lrw.ResponseWriter.Write(b) + lrw.bytesWritten += int64(n) + + return n, err +} + // Logging returns a logging middleware. func (s *Middleware) Logging() func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { @@ -90,6 +98,7 @@ func (s *Middleware) Logging() func(http.Handler) http.Handler { "proto", r.Proto, "remoteIP", ipFromHostPort(r.RemoteAddr), "status", lrw.statusCode, + "response_bytes", lrw.bytesWritten, "latency_ms", latency.Milliseconds(), ) }()