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); } }
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); }