github.com/avenga/couper@v1.12.2/telemetry/handler/wrapped.go (about) 1 package handler 2 3 import ( 4 "context" 5 "net/http" 6 "time" 7 8 "github.com/sirupsen/logrus" 9 10 "github.com/avenga/couper/config" 11 "github.com/avenga/couper/config/request" 12 "github.com/avenga/couper/handler/middleware" 13 "github.com/avenga/couper/logging" 14 ) 15 16 func NewWrappedHandler(log *logrus.Entry, handler http.Handler) http.Handler { 17 accessLog := logging.NewAccessLog(nil, log) 18 19 uidHandler := middleware.NewUIDHandler(config.NewDefaultSettings(), "")(handler) 20 logHandler := http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { 21 ctx := context.WithValue(req.Context(), request.LogDebugLevel, true) 22 ctx = context.WithValue(ctx, request.StartTime, time.Now()) 23 var logStack *logging.Stack 24 ctx, logStack = logging.NewStack(ctx) 25 r := req.WithContext(ctx) 26 uidHandler.ServeHTTP(rw, r) 27 accessLog.Do(rw, r) 28 logStack.Fire() 29 }) 30 return logHandler 31 }