public static IServiceCollection AddButterflyForShriekConsole(this IServiceCollection services, Action <ButterflyOptions> optionAction) { var option = new ButterflyOptions(); optionAction(option); services.AddButterfly(optionAction); services.AddSingleton <ILoggerFactory>(new LoggerFactory()); services.AddSingleton <IOptions <ButterflyOptions> >(new OptionsWrapper <ButterflyOptions>(option)); services.AddSingleton <IServiceTracerProvider, ConsoleServiceTracerProvider>(); services.AddSingleton <IButterflyDispatcher>(provider => { var dispatcher = provider.GetRequiredService <IButterflyDispatcherProvider>().GetDispatcher(); dispatcher.Initialization().Wait(); return(dispatcher); }); services.AddSingleton <IHttpClient>(p => { var handler = p.GetService <HttpTracingHandler>(); return(new HttpClientAdapter(new HttpClient(handler))); }); return(services); }
public static void Init(ButterflyOptions options, ILoggerFactory loggerFactory) { if (Instence == null) { Instence = new TracerManager(options, loggerFactory); } }
private TracerManager(ButterflyOptions options, ILoggerFactory loggerFactory) { var senderProvider = new DefaultSenderProvider(options); var callback = new SpanDispatchCallback(senderProvider, loggerFactory); var dispatcher = new ButterflyDispatcher(new IDispatchCallback[] { callback }, loggerFactory, 0, 0, 0); var spanRecorder = new AsyncSpanRecorder(dispatcher); var tracer = new Tracer(spanRecorder); #if NETSTANDARD1_6 var environmentName = ((dynamic)Assembly.GetEntryAssembly().GetCustomAttribute <DebuggableAttribute>()).IsJITTrackingEnabled is bool debugMode ? debugMode ? "Development" : "Production" : "Unknown"; #else var environmentName = Assembly.GetEntryAssembly().GetCustomAttribute <DebuggableAttribute>().IsJITTrackingEnabled ? "Development" : "Production"; #endif var service = options.Service ?? Assembly.GetEntryAssembly().GetName().Name; var host = Dns.GetHostName(); var identity = string.IsNullOrEmpty(options.ServiceIdentity) ? $"{service}@{host}" : options.ServiceIdentity; ServiceTracer = new ServiceTracer(tracer, service, environmentName, identity, host); }
public ConsoleServiceTracerProvider(ITracer tracer, IOptions <ButterflyOptions> options) { _tracer = tracer; _options = options.Value; }
public DefaultSenderProvider(ButterflyOptions options) { _options = options; }