From 6e56cefe6fdd90217b9310d7db33a5e7c55aec77 Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Fri, 27 Jun 2025 20:42:07 +0100 Subject: [PATCH] Move logging middleware into internal middleware package --- cmd/server/main.go | 31 +++---------------------------- internal/middleware/logger.go | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 internal/middleware/logger.go diff --git a/cmd/server/main.go b/cmd/server/main.go index 31342ee..baea7dd 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -33,11 +33,11 @@ func main() { etag := middleware.NewETag("static", cacheExpiration) - router.Handle("/", logger(http.RedirectHandler("/notes/", http.StatusFound))) - router.Handle("/notes/", logger(http.StripPrefix("/notes", notesRouter))) + router.Handle("/", middleware.LoggingMiddleware(http.RedirectHandler("/notes/", http.StatusFound))) + router.Handle("/notes/", middleware.LoggingMiddleware(http.StripPrefix("/notes", notesRouter))) router.Handle( "/static/", - logger( + middleware.LoggingMiddleware( middleware.StaticEtagMiddleware( *etag, http.FileServer(http.FS(conf.Static)), @@ -51,28 +51,3 @@ func main() { } log.Fatal(http.Serve(listener, router)) } - -type loggingResponseWriter struct { - http.ResponseWriter - statusCode int -} - -func NewLoggingResponseWriter(w http.ResponseWriter) *loggingResponseWriter { - return &loggingResponseWriter{w, http.StatusOK} -} - -func (w *loggingResponseWriter) WriteHeader(code int) { - w.statusCode = code - w.ResponseWriter.WriteHeader(code) -} - -func logger(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - lwr := NewLoggingResponseWriter(w) - next.ServeHTTP(lwr, r) - - if conf.Conf.LogAccess { - log.Printf("%s %s %s%s %d", r.RemoteAddr, r.Method, r.Host, r.URL.Path, lwr.statusCode) - } - }) -} diff --git a/internal/middleware/logger.go b/internal/middleware/logger.go new file mode 100644 index 0000000..fe7f253 --- /dev/null +++ b/internal/middleware/logger.go @@ -0,0 +1,33 @@ +package middleware + +import ( + "log" + "net/http" + + "forgejo.gwairfelin.com/max/gonotes/internal/conf" +) + +type loggingResponseWriter struct { + http.ResponseWriter + statusCode int +} + +func NewLoggingResponseWriter(w http.ResponseWriter) *loggingResponseWriter { + return &loggingResponseWriter{w, http.StatusOK} +} + +func (w *loggingResponseWriter) WriteHeader(code int) { + w.statusCode = code + w.ResponseWriter.WriteHeader(code) +} + +func LoggingMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + lwr := NewLoggingResponseWriter(w) + next.ServeHTTP(lwr, r) + + if conf.Conf.LogAccess { + log.Printf("%s %s %s%s %d", r.RemoteAddr, r.Method, r.Host, r.URL.Path, lwr.statusCode) + } + }) +}