diff options
author | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2025-08-02 22:23:13 +0530 |
---|---|---|
committer | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2025-08-02 23:02:30 +0530 |
commit | 178e0bfc2d8709ae4d3abd7519b260df09b2d3b5 (patch) | |
tree | 10cbdd013c62586190074d9f088e2269f88c4cab /logging/handler/handler.go | |
parent | Fixed Broken .gitignore (diff) | |
download | gopkgserver-0.1.0.tar gopkgserver-0.1.0.tar.gz gopkgserver-0.1.0.tar.bz2 gopkgserver-0.1.0.tar.lz gopkgserver-0.1.0.tar.xz gopkgserver-0.1.0.tar.zst gopkgserver-0.1.0.zip |
Diffstat (limited to '')
-rw-r--r-- | logging/handler/handler.go | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/logging/handler/handler.go b/logging/handler/handler.go deleted file mode 100644 index 1501715..0000000 --- a/logging/handler/handler.go +++ /dev/null @@ -1,75 +0,0 @@ -package handler - -import ( - "go-pkg-server/logging" - "log/slog" - "net/http" - "time" -) - -type traceWriter struct { - http.ResponseWriter - status int - bytes int -} - -var _ http.ResponseWriter = &traceWriter{} - -func (t *traceWriter) Write(b []byte) (int, error) { - if t.status == 0 { - t.WriteHeader(http.StatusOK) - } - c, err := t.ResponseWriter.Write(b) - t.bytes += c - return c, err -} - -func (tw *traceWriter) WriteHeader(statusCode int) { - if tw.status == 0 { - tw.status = http.StatusOK - } - tw.status = statusCode - tw.ResponseWriter.WriteHeader(statusCode) -} - -func New(next http.Handler) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() - logger := logging.FromContext(ctx) - - defer func() { - err := recover() - if err != nil { - logging.RecoverLog(ctx, err) - http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) - } - }() - - logger = logger.With("method", r.Method, - "host", r.Host, - "remote_address", r.RemoteAddr, - "path", r.RequestURI, - ) - - ctx = logging.WithLogger(ctx, logger) - - r = r.WithContext(ctx) - - tw := &traceWriter{ResponseWriter: w} - - start := time.Now() - next.ServeHTTP(tw, r) - duration := time.Since(start) - - logger.Log(ctx, slog.LevelInfo, "Request Handled", - "protocol", r.Proto, - "bytes_recieved", r.ContentLength, - "status", tw.status, - "time", duration, - "bytes_sent", tw.bytes, - "user_agent", r.UserAgent(), - "referer", r.Referer(), - ) - - } -} |