From 2e51c4e4ded1e1cb73d994f8878cf9062588d29c Mon Sep 17 00:00:00 2001 From: Kaiwalya Joshi Date: Tue, 9 May 2023 19:13:08 -0500 Subject: [PATCH] feat: Add logging middleware for better debugging. --- pkg/proxy/server.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pkg/proxy/server.go b/pkg/proxy/server.go index 8424226..f59e008 100644 --- a/pkg/proxy/server.go +++ b/pkg/proxy/server.go @@ -1,6 +1,7 @@ package proxy import ( + "fmt" "log" "net/http" @@ -22,7 +23,32 @@ func New(cfg *rest.Config, b bundle.Bundle, rr rewriter.ResourceRewriter) http.H proxyHandler.ModifyResponse = proxyModifyResponse(rr) //nolint:bodyclose // false positive r := mux.NewRouter() + r.Use(loggingMiddleware) r.Handle("/api/v1/namespaces/{namespace}/pods/{pod}/log", LogsHandler(b)) r.PathPrefix("/").Handler(proxyHandler) return r } + +type LogRecorder struct { + http.ResponseWriter + status int +} + +func (r *LogRecorder) Write(p []byte) (int, error) { + return r.ResponseWriter.Write(p) +} + +func (r *LogRecorder) WriteHeader(status int) { + r.status = status + r.ResponseWriter.WriteHeader(status) +} + +func loggingMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + writerWrap := &LogRecorder{ + ResponseWriter: w, + } + next.ServeHTTP(writerWrap, r) + fmt.Println(writerWrap.status, r.Method, r.RequestURI) + }) +}