diff options
author | Michael Hunteman <huntemanmt@gmail.com> | 2025-02-02 18:57:30 -0600 |
---|---|---|
committer | Michael Hunteman <huntemanmt@gmail.com> | 2025-02-02 19:04:24 -0600 |
commit | 5fffbba3b851f6cebfd0e616bef2ff6f0c520c3d (patch) | |
tree | fe8b7a5ba77f83f7b82753d5cc58cba51596da2b /server/middleware/logging.go | |
parent | 23bcef02052c45089358d22d0645ceac858de3bb (diff) |
Diffstat (limited to 'server/middleware/logging.go')
-rw-r--r-- | server/middleware/logging.go | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/server/middleware/logging.go b/server/middleware/logging.go deleted file mode 100644 index d91a5c8..0000000 --- a/server/middleware/logging.go +++ /dev/null @@ -1,50 +0,0 @@ -package middleware - -import ( - "bytes" - "fmt" - "log/slog" - "net/http" - "os" - "time" -) - -type LoggingResponseWriter struct { - http.ResponseWriter - statusCode int - responseBody *bytes.Buffer -} - -func (w *LoggingResponseWriter) WriteHeader(code int) { - w.statusCode = code - w.ResponseWriter.WriteHeader(code) -} - -func (w *LoggingResponseWriter) Write(b []byte) (int, error) { - w.responseBody.Write(b) - return w.ResponseWriter.Write(b) -} - -func LoggingMiddleware(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - start := time.Now() - - rw := &LoggingResponseWriter{ - ResponseWriter: w, - statusCode: http.StatusOK, - responseBody: &bytes.Buffer{}, - } - - jsonHandler := slog.NewJSONHandler(os.Stderr, nil) - myslog := slog.New(jsonHandler) - next.ServeHTTP(rw, r) - - if rw.statusCode >= 400 { - myslog.Error("Request", "IP", r.RemoteAddr, "Method", r.Method, "Path", r.URL.Path, "Status", - rw.statusCode, "Duration", fmt.Sprint(time.Since(start)), "Response", rw.responseBody.String()) - } else { - myslog.Info("Request", "IP", r.RemoteAddr, "Method", r.Method, "Path", r.URL.Path, "Status", - rw.statusCode, "Duration", fmt.Sprint(time.Since(start))) - } - }) -} |