diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-09-12 02:07:36 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-12 02:07:36 -0400 |
commit | f785d8d1940a6cf3ac76f4c333d157bd9d4c76b7 (patch) | |
tree | 215fcf8cac010819b632cc4c564025413b93728c /pkg/api/server/handler_logging.go | |
parent | 72662f790bad0a3dc26a6a1498b6daa936702bb6 (diff) | |
parent | deaf9692432bb6a9353fe56cecb6cddf0401a78c (diff) | |
download | podman-f785d8d1940a6cf3ac76f4c333d157bd9d4c76b7.tar.gz podman-f785d8d1940a6cf3ac76f4c333d157bd9d4c76b7.tar.bz2 podman-f785d8d1940a6cf3ac76f4c333d157bd9d4c76b7.zip |
Merge pull request #11517 from jwhonce/issues/10053
Refactor API server emphasis on logging
Diffstat (limited to 'pkg/api/server/handler_logging.go')
-rw-r--r-- | pkg/api/server/handler_logging.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/pkg/api/server/handler_logging.go b/pkg/api/server/handler_logging.go new file mode 100644 index 000000000..699fab7a5 --- /dev/null +++ b/pkg/api/server/handler_logging.go @@ -0,0 +1,51 @@ +package server + +import ( + "io" + "io/ioutil" + "net/http" + "time" + + "github.com/gorilla/mux" + "github.com/sirupsen/logrus" +) + +type responseWriter struct { + http.ResponseWriter +} + +var apiLogger = &logrus.Logger{ + Formatter: &logrus.TextFormatter{ + DisableColors: true, + DisableLevelTruncation: true, + FullTimestamp: true, + QuoteEmptyFields: true, + TimestampFormat: time.RFC3339, + }, + Level: logrus.TraceLevel, + Out: logrus.StandardLogger().Out, +} + +func (l responseWriter) Write(b []byte) (int, error) { + apiLogger.WithFields(logrus.Fields{ + "API": "response", + "X-Reference-Id": l.Header().Get("X-Reference-Id"), + }).Trace(string(b)) + return l.ResponseWriter.Write(b) +} + +func loggingHandler() mux.MiddlewareFunc { + return func(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + annotated := apiLogger.WithFields(logrus.Fields{ + "API": "request", + "X-Reference-Id": r.Header.Get("X-Reference-Id"), + }) + r.Body = ioutil.NopCloser( + io.TeeReader(r.Body, annotated.WriterLevel(logrus.TraceLevel))) + + w = responseWriter{ResponseWriter: w} + h.ServeHTTP(w, r) + }) + } +} |