diff options
author | Alexander Stecher <[email protected]> | 2024-09-26 20:23:12 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2024-09-26 12:23:12 -0600 |
commit | 22c98ea165bdfbca33fbc77ce3b2bd22d3ee4626 (patch) | |
tree | aac18134676f41b2be95999d816dda8f5922da6c | |
parent | 2faeac0a104c72e9396717406ecb7c353bf9aa64 (diff) | |
download | caddy-22c98ea165bdfbca33fbc77ce3b2bd22d3ee4626.tar.gz caddy-22c98ea165bdfbca33fbc77ce3b2bd22d3ee4626.zip |
caddyhttp: Optimize logs using zap's WithLazy() (#6590)
* uses zap's .WithLazy with a cloned request
* fixes the cloning
* adds comment explaining why cloning is faster
-rw-r--r-- | modules/caddyhttp/server.go | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/modules/caddyhttp/server.go b/modules/caddyhttp/server.go index ece3f1cd2..f5478cb37 100644 --- a/modules/caddyhttp/server.go +++ b/modules/caddyhttp/server.go @@ -313,16 +313,18 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } } - // encode the request for logging purposes before + // clone the request for logging purposes before // it enters any handler chain; this is necessary // to capture the original request in case it gets // modified during handling + // cloning the request and using .WithLazy is considerably faster + // than using .With, which will JSON encode the request immediately shouldLogCredentials := s.Logs != nil && s.Logs.ShouldLogCredentials loggableReq := zap.Object("request", LoggableHTTPRequest{ - Request: r, + Request: r.Clone(r.Context()), ShouldLogCredentials: shouldLogCredentials, }) - errLog := s.errorLogger.With(loggableReq) + errLog := s.errorLogger.WithLazy(loggableReq) var duration time.Duration |