12345678910111213141516171819202122232425 |
- package handler
- import (
- "net/http"
- "github.com/tal-tech/go-zero/core/logx"
- "github.com/tal-tech/go-zero/core/sysx"
- "github.com/tal-tech/go-zero/core/trace"
- )
- func TracingHandler(next http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- carrier, err := trace.Extract(trace.HttpFormat, r.Header)
- // ErrInvalidCarrier means no trace id was set in http header
- if err != nil && err != trace.ErrInvalidCarrier {
- logx.Error(err)
- }
- ctx, span := trace.StartServerSpan(r.Context(), carrier, sysx.Hostname(), r.RequestURI)
- defer span.Finish()
- r = r.WithContext(ctx)
- next.ServeHTTP(w, r)
- })
- }
|