private void Initialize(ApplicationInsightsOutputConfiguration aiOutputConfiguration) { Debug.Assert(aiOutputConfiguration != null); Debug.Assert(this.healthReporter != null); if (!aiOutputConfiguration.Validate(out string validationError)) { this.healthReporter.ReportWarning($"{nameof(ApplicationInsightsOutput)}: invalid configuration. {validationError} No data will be sent to Application Insights", EventFlowContextIdentifiers.Output); return; } TelemetryConfiguration telemetryConfiguration = null; if (string.IsNullOrWhiteSpace(aiOutputConfiguration.ConfigurationFilePath)) { telemetryConfiguration = TelemetryConfiguration.CreateDefault(); } else { string configurationFileContent = File.ReadAllText(aiOutputConfiguration.ConfigurationFilePath); telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationFileContent); } if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.ConnectionString)) { telemetryConfiguration.ConnectionString = aiOutputConfiguration.ConnectionString; } if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { telemetryConfiguration.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } this.telemetryClient = new TelemetryClient(telemetryConfiguration); }
private void Initialize(ApplicationInsightsOutputConfiguration aiOutputConfiguration) { Debug.Assert(aiOutputConfiguration != null); Debug.Assert(this.healthReporter != null); if (string.IsNullOrWhiteSpace(aiOutputConfiguration.ConfigurationFilePath)) { if (string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { string errorMessage = $"{nameof(ApplicationInsightsOutput)}: Application Insights instrumentation key is not set)"; this.healthReporter.ReportProblem(errorMessage, EventFlowContextIdentifiers.Configuration); throw new Exception(errorMessage); } this.telemetryClient = new TelemetryClient(); this.telemetryClient.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } else { string configurationFileContent = File.ReadAllText(aiOutputConfiguration.ConfigurationFilePath); TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationFileContent); if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { telemetryConfiguration.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } this.telemetryClient = new TelemetryClient(telemetryConfiguration); } }
public static void Initialize(bool forLibrary = false) { #pragma warning disable CA2000 // Dispose objects before losing scope string?xmlData = null; try { if (File.Exists("ApplicationInsights.config")) { xmlData = File.ReadAllText("ApplicationInsights.config"); } } catch { } var config = xmlData != null?TelemetryConfiguration.CreateFromConfiguration(xmlData) : TelemetryConfiguration.CreateDefault(); #pragma warning restore CA2000 // Dispose objects before losing scope if (!forLibrary) { config.TelemetryInitializers.Add(new AppVersionTelemetryInitializer()); config.TelemetryInitializers.Add(new EnvironmentTelemetryInitializer()); #if WINDOWS Application.Current.DispatcherUnhandledException += App_DispatcherUnhandledException; #endif } _service = new AppInsightsTelemetryService(new TelemetryClient(config)); }
// 透過這個自訂的方法,方便我們初始化 TelemetryClient private static TelemetryClient InitializeTelemetry(string configPath = null) { // 這裡會判斷是否使用明確指定設定檔路徑,若有指定,則使用自訂的設定檔 var configuration = string.IsNullOrEmpty(configPath) ? TelemetryConfiguration.Active : TelemetryConfiguration.CreateFromConfiguration(File.ReadAllText(configPath)); return(new TelemetryClient(configuration)); }
static void Main(string[] args) { TelemetryConfiguration configuration = TelemetryConfiguration.CreateFromConfiguration(File.ReadAllText("ApplicationInsights.config")); configuration.TelemetryInitializers.Add(_operationIdInitializer); var telemetryClient = new TelemetryClient(configuration); // // run app... SimulateUsage(telemetryClient, 500); // before exit, flush the remaining data telemetryClient.Flush(); // flush is not blocking so wait a bit Task.Delay(5000).Wait(); }
private void Initialize(ApplicationInsightsOutputConfiguration aiOutputConfiguration) { Debug.Assert(aiOutputConfiguration != null); Debug.Assert(this.healthReporter != null); if (string.IsNullOrWhiteSpace(aiOutputConfiguration.ConfigurationFilePath)) { this.telemetryClient = new TelemetryClient(); } else { string configurationFileContent = File.ReadAllText(aiOutputConfiguration.ConfigurationFilePath); TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationFileContent); this.telemetryClient = new TelemetryClient(telemetryConfiguration); } if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { this.telemetryClient.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } }
public void ReportsAllTelemetryTypes() { string pipelineConfiguration = @" { ""inputs"": [ { ""type"": ""ApplicationInsights"" } ], ""outputs"": [ { ""type"": ""UnitTestOutput"", ""preserveEvents"": ""true"" } ], ""schemaVersion"": ""2016-08-11"", ""extensions"": [ { ""category"": ""outputFactory"", ""type"": ""UnitTestOutput"", ""qualifiedTypeName"": ""Microsoft.Diagnostics.EventFlow.TestHelpers.UnitTestOutputFactory, Microsoft.Diagnostics.EventFlow.TestHelpers"" }, { ""category"": ""healthReporter"", ""type"": ""CustomHealthReporter"", ""qualifiedTypeName"": ""Microsoft.Diagnostics.EventFlow.TestHelpers.CustomHealthReporter, Microsoft.Diagnostics.EventFlow.TestHelpers"" } ] }"; using (var configFile = new TemporaryFile()) { configFile.Write(pipelineConfiguration); ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddJsonFile(configFile.FilePath); var configuration = builder.Build(); UnitTestOutput unitTestOutput = null; using (var pipeline = DiagnosticPipelineFactory.CreatePipeline(configuration)) { unitTestOutput = pipeline.Sinks.First().Output as UnitTestOutput; string configurationDoc = File.ReadAllText("ApplicationInsights.config"); TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationDoc); EventFlowTelemetryProcessor efTelemetryProcessor = telemetryConfiguration.TelemetryProcessors.OfType <EventFlowTelemetryProcessor>().First(); efTelemetryProcessor.Pipeline = pipeline; TelemetryClient client = new TelemetryClient(telemetryConfiguration); client.TrackTrace("This is a trace"); client.TrackRequest("DoStuff", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(20), "200 OK", success: true); client.TrackEvent("ImportantEvent", new Dictionary <string, string> { { "eventProp", "foo" } }); client.TrackDependency("otherService", "inquire", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(57), success: true); client.TrackMetric("rps", 340.7); try { throw new Exception("Oops!"); } catch (Exception e) { client.TrackException(e); } client.TrackPageView("Home page"); client.TrackAvailability("frontend-service-ping", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(73.5), "Munich-DE", success: true); } Assert.Equal(8, unitTestOutput.EventCount); Assert.Collection(unitTestOutput.CapturedEvents, e => Assert.Equal("trace", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]), e => Assert.Equal("request", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]), e => Assert.Equal("event", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]), e => Assert.Equal("dependency", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]), e => Assert.Equal("metric", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]), e => Assert.Equal("exception", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]), e => Assert.Equal("page_view", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]), e => Assert.Equal("availability", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty])); } }