示例#1
0
        /// <summary>
        /// Gets the KubernetesTelemetryInitializer from the service collection and adds it into a TelemetryConfiguration instance.
        /// </summary>
        private static void AddKubernetesTelemetryInitializer(this TelemetryConfiguration telemetryConfiguration, IServiceCollection serviceCollection)
        {
            KubernetesTelemetryInitializer kubernetesTelemetryInitializer = null;

            if (KubernetesTelemetryInitializerExists(serviceCollection))
            {
                IServiceProvider serviceProvider = serviceCollection.BuildServiceProvider();
                kubernetesTelemetryInitializer = serviceProvider.GetServices <ITelemetryInitializer>()
                                                 .FirstOrDefault(ti => ti.GetType() == typeof(KubernetesTelemetryInitializer)) as KubernetesTelemetryInitializer;
                telemetryConfiguration.TelemetryInitializers.Add(kubernetesTelemetryInitializer);
                _logger.LogTrace("KubernetesTelemetryInitializer has been injected into telemetry configuration #{0}.", telemetryConfiguration.GetHashCode());
                _logger.LogInformation("KubernetesTelemetryInitializer is injected.");
            }
            else
            {
                _logger.LogError("No KubernetesTelemetryInitializer to append to TelemetryConfiguration.");
            }
        }