public ZipkinClient(ITraceProvider traceProvider, string requestName, IMDLogger logger, IZipkinConfig zipkinConfig, ISpanCollectorBuilder spanCollectorBuilder) { this.logger = logger; isTraceOn = true; if (logger == null || IsConfigValuesNull(zipkinConfig) || !IsConfigValuesValid(zipkinConfig) || !IsTraceProviderValidAndSamplingOn(traceProvider)) { isTraceOn = false; } if (isTraceOn) { try { spanCollector = spanCollectorBuilder.Build(zipkinConfig.ZipkinServerName, int.Parse(zipkinConfig.ZipkinServerPort), int.Parse(zipkinConfig.SpanProcessorBatchSize)); spanCollector.Start(); spanTracer = new SpanTracer(spanCollector, zipkinConfig.ServiceName, new ServiceEndpoint()); this.requestName = requestName; this.traceProvider = traceProvider; } catch (Exception ex) { logger.Error("Error Building Zipkin Client Provider", ex); isTraceOn = false; } } }
public static SpanCollector GetInstance(Uri uri, uint maxProcessorBatchSize, ILog logger) { if (instance == null) { instance = new SpanCollector(uri, maxProcessorBatchSize, logger); instance.Start(); } return(instance); }
public ZipkinClient(IZipkinConfig zipkinConfig, IOwinContext context, SpanCollector collector = null) { if (zipkinConfig == null) { throw new ArgumentNullException(nameof(zipkinConfig)); } if (context == null) { throw new ArgumentNullException(nameof(context)); } var traceProvider = new TraceProvider(zipkinConfig, context); IsTraceOn = !zipkinConfig.Bypass(context.Request) && IsTraceProviderSamplingOn(traceProvider); if (!IsTraceOn) { return; } zipkinConfig.Validate(); ZipkinConfig = zipkinConfig; this.logger = LogProvider.GetCurrentClassLogger(); try { spanCollector = collector ?? GetInstance( zipkinConfig.ZipkinBaseUri, zipkinConfig.SpanProcessorBatchSize); spanCollector.Start(); spanTracer = new SpanTracer( spanCollector, new ServiceEndpoint(), zipkinConfig.NotToBeDisplayedDomainList, zipkinConfig.Domain(context.Request)); TraceProvider = traceProvider; } catch (Exception ex) { logger.Log(LogLevel.Error, () => "Error Building Zipkin Client Provider", ex); IsTraceOn = false; } }