diff --git a/web/public/middleware/traceRequestInfo.go b/web/public/middleware/traceRequestInfo.go index a6c7731..99e5b72 100644 --- a/web/public/middleware/traceRequestInfo.go +++ b/web/public/middleware/traceRequestInfo.go @@ -14,15 +14,27 @@ func TraceRequestInfoMiddleware(h http.Handler) http.Handler { return webutils.ChainMiddlewares( h, hlog.AccessHandler(func(r *http.Request, status, size int, duration time.Duration) { + if !hlog.FromRequest(r).Trace().Enabled() { + return + } body, _ := io.ReadAll(r.Body) r.Body = io.NopCloser(bytes.NewReader(body)) + IPAddress := r.Header.Get("X-Real-Ip") + if IPAddress == "" { + IPAddress = r.Header.Get("X-Forwarded-For") + } + if IPAddress == "" { + IPAddress = r.RemoteAddr + } hlog.FromRequest(r).Trace().Any("headers", r.Header). Bytes("body", body). Str("method", r.Method). Stringer("url", r.URL). Int("status", status). Int("size", size). - Dur("duration", duration) + Str("real-ip", IPAddress). + Dur("duration", duration). + Send() }), ) }