Пример #1
0
        public void Inject <TCarrier>(ISpanContext spanContext, IFormat <TCarrier> format, TCarrier carrier)
        {
            VerifySupportedFormat(format);
            ITextMap implCarrier = GetRealCarrier(carrier);
            Trace    trace       = GetRealSpanContext(spanContext).Trace;

            _traceInjector.Inject(trace, implCarrier, (c, key, value) => c.Set(key, value));
        }
Пример #2
0
 protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
 {
     using (var clientTrace = new ClientTrace(_serviceName, request.Method.ToString()))
     {
         if (clientTrace.Trace != null)
         {
             _injector.Inject(clientTrace.Trace, request.Headers, (c, key, value) => c.Add(key, value));
         }
         return(await TraceHelper.TracedActionAsync(base.SendAsync(request, cancellationToken)));
     }
 }
Пример #3
0
        protected async override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
        {
            Trace trace;

            if (!_extractor.TryExtract(request.Headers, (c, key) => c.GetValues(key).FirstOrDefault(), out trace))
            {
                trace = Trace.Create();
            }

            Trace.Current = trace;
            using (new ServerTrace(_serviceName, request.Method.Method))
            {
                trace.Record(Annotations.Tag("http.host", request.RequestUri.Host.ToString()));
                trace.Record(Annotations.Tag("http.uri", request.RequestUri.ToString()));
                trace.Record(Annotations.Tag("http.path", request.RequestUri.AbsolutePath));

                var result = await base.SendAsync(request, cancellationToken);

                _injector.Inject(trace, result.Headers, (c, key, value) => c.Add(key, value));
                return(result);
            }
        }