示例#1
0
        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));
        }
示例#5
0
        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();
        }
示例#6
0
        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]));
            }
        }