diff options
Diffstat (limited to 'internal/server/middleware.go')
| -rw-r--r-- | internal/server/middleware.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/internal/server/middleware.go b/internal/server/middleware.go new file mode 100644 index 0000000..fe51224 --- /dev/null +++ b/internal/server/middleware.go @@ -0,0 +1,24 @@ +package server + +import ( + "log" + "net/http" +) + +type statusRecorder struct { + http.ResponseWriter + status int +} + +func (r *statusRecorder) WriteHeader(code int) { + r.ResponseWriter.WriteHeader(code) + r.status = code +} + +func logRequests(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + recorder := &statusRecorder{ResponseWriter: w, status: http.StatusOK} + next.ServeHTTP(recorder, r) + log.Printf("[%s] %s - %s: %d", r.Method, r.RequestURI, r.RemoteAddr, recorder.status) + }) +} |
