aboutsummaryrefslogtreecommitdiffstats
path: root/logging/handler/handler.go
diff options
context:
space:
mode:
authorMarc Pervaz Boocha <mboocha@sudomsg.com>2025-08-02 22:23:13 +0530
committerMarc Pervaz Boocha <mboocha@sudomsg.com>2025-08-02 23:02:30 +0530
commit178e0bfc2d8709ae4d3abd7519b260df09b2d3b5 (patch)
tree10cbdd013c62586190074d9f088e2269f88c4cab /logging/handler/handler.go
parentFixed Broken .gitignore (diff)
downloadgopkgserver-main.tar
gopkgserver-main.tar.gz
gopkgserver-main.tar.bz2
gopkgserver-main.tar.lz
gopkgserver-main.tar.xz
gopkgserver-main.tar.zst
gopkgserver-main.zip
Switched to go.sudomsg.com/kitHEADv0.1.0main
Diffstat (limited to '')
-rw-r--r--logging/handler/handler.go75
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(),
- )
-
- }
-}