From 88890b0bbaddbe66dbf79657eed63eaaafbf651e Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Fri, 23 Jun 2023 12:21:25 +0200 Subject: [PATCH 1/3] Improved logging of HTTP requests --- changelog/unreleased/httplog.md | 6 ++++++ internal/http/interceptors/log/log.go | 10 ++++------ 2 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 changelog/unreleased/httplog.md diff --git a/changelog/unreleased/httplog.md b/changelog/unreleased/httplog.md new file mode 100644 index 0000000000..246c020642 --- /dev/null +++ b/changelog/unreleased/httplog.md @@ -0,0 +1,6 @@ +Enhancement: improve logging of HTTP requests + +Added request and response headers and removed redundant +URL from the "http" messages + +https://github.com/cs3org/reva/pull/4011 diff --git a/internal/http/interceptors/log/log.go b/internal/http/interceptors/log/log.go index 14f10d080c..1b22d5c6d8 100644 --- a/internal/http/interceptors/log/log.go +++ b/internal/http/interceptors/log/log.go @@ -55,7 +55,7 @@ func (h loggingHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { logger := makeLogger(w) url := *req.URL h.handler.ServeHTTP(logger, req) - writeLog(log, req, url, t, logger.Status(), logger.Size()) + writeLog(log, req, url, t, logger.Status(), logger.Size(), w.Header()) } func makeLogger(w http.ResponseWriter) loggingResponseWriter { @@ -70,7 +70,7 @@ func makeLogger(w http.ResponseWriter) loggingResponseWriter { return logger } -func writeLog(log *zerolog.Logger, req *http.Request, url url.URL, ts time.Time, status, size int) { +func writeLog(log *zerolog.Logger, req *http.Request, url url.URL, ts time.Time, status, size int, resHeaders http.Header) { end := time.Now() host, _, err := net.SplitHostPort(req.RemoteAddr) @@ -79,8 +79,6 @@ func writeLog(log *zerolog.Logger, req *http.Request, url url.URL, ts time.Time, } uri := req.RequestURI - u := req.URL.String() - if req.ProtoMajor == 2 && req.Method == "CONNECT" { uri = req.Host } @@ -101,8 +99,8 @@ func writeLog(log *zerolog.Logger, req *http.Request, url url.URL, ts time.Time, } event.Str("host", host).Str("method", req.Method). - Str("uri", uri).Str("url", u).Str("proto", req.Proto).Int("status", status). - Int("size", size). + Str("uri", uri).Str("proto", req.Proto).Interface("req_headers", req.Header). + Int("status", status).Int("size", size).Interface("res_headers", resHeaders). Str("start", ts.Format("02/Jan/2006:15:04:05 -0700")). Str("end", end.Format("02/Jan/2006:15:04:05 -0700")).Int("time_ns", int(diff)). Msg("http") From 520fbea8d3df0baa029c680cad8bb99e2508a2ea Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Fri, 23 Jun 2023 14:23:10 +0200 Subject: [PATCH 2/3] Split (potentially sensitive) details to a trace-level log --- internal/http/interceptors/log/log.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/http/interceptors/log/log.go b/internal/http/interceptors/log/log.go index 1b22d5c6d8..0367293bfa 100644 --- a/internal/http/interceptors/log/log.go +++ b/internal/http/interceptors/log/log.go @@ -91,14 +91,16 @@ func writeLog(log *zerolog.Logger, req *http.Request, url url.URL, ts time.Time, var event *zerolog.Event switch { case status < 400: - event = log.Debug() + event = log.Info() case status < 500: event = log.Warn() default: event = log.Error() } + event.Str("host", host).Str("method", req.Method).Str("uri", uri).Int("status", status). + Msg("processed http request") - event.Str("host", host).Str("method", req.Method). + log.Trace().Str("host", host).Str("method", req.Method). Str("uri", uri).Str("proto", req.Proto).Interface("req_headers", req.Header). Int("status", status).Int("size", size).Interface("res_headers", resHeaders). Str("start", ts.Format("02/Jan/2006:15:04:05 -0700")). From ef4a3e51f63ada1d12e186b49f17e877b9bc8682 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Fri, 23 Jun 2023 14:34:33 +0200 Subject: [PATCH 3/3] Addressed comment --- internal/http/interceptors/log/log.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/http/interceptors/log/log.go b/internal/http/interceptors/log/log.go index 0367293bfa..e383a51ed2 100644 --- a/internal/http/interceptors/log/log.go +++ b/internal/http/interceptors/log/log.go @@ -55,7 +55,7 @@ func (h loggingHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { logger := makeLogger(w) url := *req.URL h.handler.ServeHTTP(logger, req) - writeLog(log, req, url, t, logger.Status(), logger.Size(), w.Header()) + writeLog(log, req, url, t, logger.Status(), logger.Size(), logger.Header()) } func makeLogger(w http.ResponseWriter) loggingResponseWriter {