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);
        }
Example #4
0
 public ConsoleServiceTracerProvider(ITracer tracer, IOptions <ButterflyOptions> options)
 {
     _tracer  = tracer;
     _options = options.Value;
 }
 public DefaultSenderProvider(ButterflyOptions options)
 {
     _options = options;
 }