public void SetupAppWideServices(
            TelemetryConfiguration telemetryConfiguration,
            bool enableDependencyTracking,
            bool enableLogCollection)
        {
            if (telemetryConfiguration == null)
            {
                return;
            }

            TelemetryConfiguration.Active.InstrumentationKey = telemetryConfiguration.InstrumentationKey;
            _telemetryConfigurationFactory.PopulateWithCommonConfiguration(TelemetryConfiguration.Active);

            // Telemetry modules can be only instantiated and initialized once per app domain.
            if (!_telemetryModulesInitialized)
            {
                var telemetryModules = new List <ITelemetryModule>();

                if (enableDependencyTracking)
                {
                    telemetryModules.Add(new DependencyTrackingTelemetryModule());
                }

                telemetryModules.Add(new PerformanceCollectorModule());
                telemetryModules.Add(new DiagnosticsTelemetryModule
                {
                    DiagnosticsInstrumentationKey = telemetryConfiguration.InstrumentationKey
                });

                var quickPulseProcessor = _appWideQuickPulseTelemetryProcessorAccessor.GetAppWideQuickPulseTelemetryProcessor();
                var quickPulseModule    = new QuickPulseTelemetryModule();
                quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);
                telemetryModules.Add(quickPulseModule);

                _telemetryModulesInitializationEventHandler.TelemetryModulesInitializing(telemetryModules);

                foreach (var telemetryModule in telemetryModules)
                {
                    telemetryModule.Initialize(telemetryConfiguration);
                    _telemetryModulesHolder.RegisterTelemetryModule(telemetryModule);
                }

                _telemetryModulesInitialized = true;
            }

            if (enableLogCollection)
            {
                _loggerSetup.SetupAiAppender(Constants.DefaultLogAppenderName, telemetryConfiguration.InstrumentationKey);
            }
            else
            {
                _loggerSetup.RemoveAiAppender(Constants.DefaultLogAppenderName);
            }
        }
Ejemplo n.º 2
0
        public void PopulateWithCommonConfiguration(TelemetryConfiguration configuration)
        {
            var telemetryInitializers = configuration.TelemetryInitializers;

            telemetryInitializers.Add(new ContextPopulatingTelemetryInitializer());
            telemetryInitializers.Add(new ShellNameTelemetryInitializer());
            telemetryInitializers.Add(new WebOperationIdTelemetryInitializer());

            configuration.TelemetryProcessorChainBuilder.Use(next =>
                                                             new DispatchingQuickPulseTelemetryProcessor(
                                                                 next,
                                                                 _appWideQuickPulseTelemetryProcessorAccessor.GetAppWideQuickPulseTelemetryProcessor()));
            configuration.TelemetryProcessorChainBuilder.Build();


            _telemetryConfigurationEventHandler.ConfigurationLoaded(configuration);
        }