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  }