Esempio n. 1
0
        public void Information(Exception exception, string fmt, params object[] vars)
        {
            var telemetry = new TraceTelemetry(string.Format(fmt, vars), SeverityLevel.Information);
            telemetry.Properties.Add("Exception", ExceptionUtils.FormatException(exception, includeContext: true));

            telemetryClient.TrackTrace(telemetry);
        }
        public ActionResult Login(LoginModel model, string returnUrl)
        {
            var telemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();
            TraceTelemetry traceSample = new TraceTelemetry();

            if (ModelState.IsValid && WebSecurity.Login(
                model.UserName, model.Password, persistCookie: model.RememberMe))
            {
                // Migrate the user's shopping cart
                MigrateShoppingCart(model.UserName);
                
                //Sample Trace telemetry
                traceSample.Message = "Login succesfull";
                traceSample.SeverityLevel = SeverityLevel.Information;
                telemetryClient.TrackTrace(traceSample);

                return RedirectToLocal(returnUrl);
            }

            //Sample Trace telemetry
            traceSample.Message = "Login failed";
            traceSample.SeverityLevel = SeverityLevel.Information;
            telemetryClient.TrackTrace(traceSample);

            // If we got this far, something failed, redisplay form
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
            return View(model);
        }
        public void RichPayloadEventSourceTraceSentTest()
        {
            var client = new TelemetryClient();
            client.InstrumentationKey = Guid.NewGuid().ToString();

            using (var listener = new Microsoft.ApplicationInsights.TestFramework.TestEventListener())
            {
                listener.EnableEvents(RichPayloadEventSource.Log.EventSourceInternal, EventLevel.Verbose, RichPayloadEventSource.Keywords.Traces);

                var item = new TraceTelemetry("TestTrace", SeverityLevel.Information);
                item.Context.Properties.Add("property1", "value1");
                item.Context.User.Id = "testUserId";
                item.Context.Operation.Id = Guid.NewGuid().ToString();

                client.TrackTrace(item);

                var actualEvent = listener.Messages.FirstOrDefault();

                Assert.IsNotNull(actualEvent);
                Assert.AreEqual(client.InstrumentationKey, actualEvent.Payload[0]);

                object[] tags = actualEvent.Payload[1] as object[];
                Assert.AreEqual("ai.user.id", ((Dictionary<string, object>)(tags[0]))["Key"]);
                Assert.AreEqual("testUserId", ((Dictionary<string, object>)(tags[0]))["Value"]);

                Assert.AreEqual("ai.operation.id", ((Dictionary<string, object>)(tags[1]))["Key"]);
                Assert.AreEqual(item.Context.Operation.Id, ((Dictionary<string, object>)(tags[1]))["Value"]);

                Assert.IsNotNull(actualEvent.Payload[2]);
            }
        }
        //
        // GET: /ShoppingCart/

        public ActionResult Index()
        {
            var telemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();

            var cart = ShoppingCart.GetCart(storeDB, this.HttpContext);

            // Set up our ViewModel
            var viewModel = new ShoppingCartViewModel
            {
                CartItems = cart.GetCartItems(),
                CartTotal = cart.GetTotal()
            };

            foreach (var item in viewModel.CartItems)
            {
                Trace.Write("Cart item: " + item.AlbumId);
            }
            
            //Sample Trace Telemetry
            TraceTelemetry sampleTelemetry = new TraceTelemetry();
            sampleTelemetry.Message = "Normal response- Database";
            sampleTelemetry.SeverityLevel = SeverityLevel.Information;
            telemetryClient.TrackTrace(sampleTelemetry);

            // Return the view
            return View(viewModel);
        }
 public void ConstructorInitializesTraceTelemetryInstanceWithGivenMessage()
 {
     var item = new TraceTelemetry("TestMessage");
     Assert.NotNull(item.Context);
     Assert.NotNull(item.Properties);
     Assert.Equal("TestMessage", item.Message);
     Assert.Null(item.SeverityLevel);
 }
 public void ConstructorInitializesTraceTelemetryInstanceWithGivenMessageAndSeverityLevel()
 {
     var trace = new TraceTelemetry("TestMessage", SeverityLevel.Critical);
     Assert.NotNull(trace.Context);
     Assert.NotNull(trace.Properties);
     Assert.Equal("TestMessage", trace.Message);
     Assert.Equal(SeverityLevel.Critical, trace.SeverityLevel);
 }
 public void ConstructorInitializesDefaultTraceTelemetryInstance()
 {
     var item = new TraceTelemetry();
     Assert.NotNull(item.Context);
     Assert.NotNull(item.Properties);
     Assert.Empty(item.Message);
     Assert.Null(item.SeverityLevel);
 }
 public TraceTelemetryMessage(TraceTelemetry telemetry)
 {
     this.Time = telemetry.Timestamp.DateTime;
     this.Name = "Trace";
     this.Details = telemetry.Message;
     this.Properties = telemetry.Properties.Count > 0 ? telemetry.Properties : null;
     this.Type = "Trace";
     this.Context = telemetry.Context;
 }
        public void SerializeWritesItemSeverityLevelAsExpectedByEndpoint()
        {
            var expected = new TraceTelemetry { SeverityLevel = SeverityLevel.Information };
            ((ITelemetry)expected).Sanitize();

            var item = TelemetryItemTestHelper.SerializeDeserializeTelemetryItem<TraceTelemetry, DataPlatformModel.MessageData>(expected);

            Assert.Equal(Developer.Analytics.DataCollection.Model.v2.SeverityLevel.Information, item.Data.BaseData.SeverityLevel.Value);
        }
 public void Log(ITelemetry telemetry)
 {
     DC.TraceTelemetry trace = new DC.TraceTelemetry();
     trace.Message = (telemetry as TraceTelemetry)?.Message;
     foreach (var item in telemetry.Properties)
     {
         trace.Properties.Add(item.Key, item.Value);
     }
     client.TrackTrace(trace);
 }
        public void Can_Set_Operation_Id_On_Telemetry()
        {
            var telemetry = new TraceTelemetry();
            var sut = new OperationIdTelemetryInitializer();

            OperationIdContext.Create();
            sut.Initialize(telemetry);

            telemetry.Context.Operation.Id.Should().Be(OperationIdContext.Get());
        }
        public void SamplingScoreIsRandomIfUserIdAndOperationIdAreNotPresent()
        {
            var eventTelemetry = new EventTelemetry();
            var traceTelemetry = new TraceTelemetry();

            var eventTelemetrySamplingScore = SamplingScoreGenerator.GetSamplingScore(eventTelemetry);
            var traceTelemetrySamplingScore = SamplingScoreGenerator.GetSamplingScore(traceTelemetry);

            Assert.NotEqual(eventTelemetrySamplingScore, traceTelemetrySamplingScore);
        }
        public void InitializeSetsLocationIpToUserHostAddressFromXForwarderHeader()
        {
            var dictionary = new Dictionary<string, string> { { "X-Forwarded-For", "1.2.3.4" } };
            var module = new TestableClientIpHeaderTelemetryInitializer(dictionary);
            var telemetry = new TraceTelemetry();

            module.Initialize(telemetry);

            Assert.AreEqual("1.2.3.4", telemetry.Context.Location.Ip);
        }
        public void InitializeDoesNotOverrideCustomerParentOperationId()
        {
            var source = new TestableOperationCorrelationTelemetryInitializer(null);

            var customerTelemetry = new TraceTelemetry("Text");
            customerTelemetry.Context.Operation.ParentId = "CustomId";

            source.Initialize(customerTelemetry);

            Assert.AreEqual("CustomId", customerTelemetry.Context.Operation.ParentId);
        }
        public void Should_Not_Change_Operation_Id_If_Context_Not_Created()
        {
            var telemetry = new TraceTelemetry();
            telemetry.Context.Operation.Id = "test";

            var sut = new OperationIdTelemetryInitializer();

            sut.Initialize(telemetry);

            telemetry.Context.Operation.Id.Should().Be("test");
        }
        public void InitializeSetsRequestTelemetryRootOperaitonIdToOepraitonId()
        {
            var source = new TestableOperationCorrelationTelemetryInitializer(null);
            var requestTelemetry = source.FakeContext.CreateRequestTelemetryPrivate();

            var customerTelemetry = new TraceTelemetry("Text");

            source.Initialize(customerTelemetry);

            Assert.AreEqual(requestTelemetry.Id, requestTelemetry.Context.Operation.Id);
        }
Esempio n. 17
0
        public void TraceApi(string componentName, string method, TimeSpan timespan, string properties)
        {
            var telemetry = new TraceTelemetry("Trace component call", SeverityLevel.Verbose);
            telemetry.Properties.Add("component", componentName);
            telemetry.Properties.Add("method", method);
            telemetry.Properties.Add("timespan", timespan.ToString());

            if (!string.IsNullOrWhiteSpace(properties))
                telemetry.Properties.Add("properties", properties);

            telemetryClient.TrackTrace(telemetry);
        }
        public void InitializeDoesNotOverrideCustomerRootOperationId()
        {
            var source = new TestableOperationCorrelationTelemetryInitializer(null);
            var requestTelemetry = source.FakeContext.CreateRequestTelemetryPrivate();
            requestTelemetry.Context.Operation.Id = "RootId";

            var customerTelemetry = new TraceTelemetry("Text");
            customerTelemetry.Context.Operation.Id = "CustomId";

            source.Initialize(customerTelemetry);

            Assert.AreEqual("CustomId", customerTelemetry.Context.Operation.Id);
        }
        public void TraceTelemetrySerializesToJsonCorrectly()
        {
            var expected = new TraceTelemetry();
            expected.Message = "My Test";
            expected.Properties.Add("Property2", "Value2");

            var item = TelemetryItemTestHelper.SerializeDeserializeTelemetryItem<TraceTelemetry, DataPlatformModel.MessageData>(expected);

            // NOTE: It's correct that we use the v1 name here, and therefore we test against it.
            Assert.Equal(item.Name, Microsoft.Developer.Analytics.DataCollection.Model.v1.ItemType.Message);
            Assert.Equal(typeof(DataPlatformModel.MessageData).Name, item.Data.BaseType);
            Assert.Equal(2, item.Data.BaseData.Ver);
            Assert.Equal(expected.Message, item.Data.BaseData.Message);
            Assert.Equal(expected.Properties.ToArray(), item.Data.BaseData.Properties.ToArray());
        }
        //
        // GET: /Home/

        public async Task<ActionResult> Index()
        {
            // Get most popular albums
            var albums = await GetTopSellingAlbums(6);
            //var albums = GetTopSellingAlbums(6);

            // Trigger some good old ADO code 
            var albumCount = GetTotalAlbumns(); 
            Trace.Write(string.Format("Total number of Albums = {0} and Albums with 'The' = {1}", albumCount.Item1, albumCount.Item2));

            var telemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();

            //Sample Trace telemetry
            TraceTelemetry traceSample = new TraceTelemetry();
            traceSample.Message = "Slow response - database";
            traceSample.SeverityLevel = SeverityLevel.Warning;
            telemetryClient.TrackTrace(traceSample);

            //Sample event telemetry
            var properties = new Dictionary<string, string> { { "Property 1",string.Format("Album Count {0}" ,albumCount.Item1) } };
            var measurements = new Dictionary<string, double> { { "Sample Meassurement", albumCount.Item1 } };
            telemetryClient.TrackEvent("Top Selling Albums", properties, measurements);

            //Sample exception telemetry
            try
            {
                albumCount = null;
                int count=albumCount.Item1;
            }
            catch (Exception ex)
            {
                telemetryClient.TrackException(ex, properties, measurements);
            }

            //Obtains the ip address from the request
            var request = new RequestTelemetry();
            request.Url = HttpContext.Request.Url;
            request.Duration = System.TimeSpan.FromMilliseconds(100);
            request.Success = false;
            request.Name = "TEST REQUEST " + request.Name;
            telemetryClient.TrackRequest(request);

            return View(albums);
        }
        public void TraceTelemetryPropertiesFromContextAndItemSerializesToPropertiesInJson()
        {
            var expected = new TraceTelemetry();

            expected.Context.GlobalProperties.Add("contextpropkey", "contextpropvalue");
            expected.Properties.Add("TestProperty", "TestPropertyValue");
            ((ITelemetry)expected).Sanitize();

            Assert.AreEqual(1, expected.Properties.Count);
            Assert.AreEqual(1, expected.Context.GlobalProperties.Count);

            Assert.IsTrue(expected.Properties.ContainsKey("TestProperty"));
            Assert.IsTrue(expected.Context.GlobalProperties.ContainsKey("contextpropkey"));

            var item = TelemetryItemTestHelper.SerializeDeserializeTelemetryItem <AI.MessageData>(expected);

            // Items added to both MessageData.Properties, and MessageData.Context.GlobalProperties are serialized to properties.
            Assert.AreEqual(2, item.data.baseData.properties.Count);
            Assert.IsTrue(item.data.baseData.properties.ContainsKey("contextpropkey"));
            Assert.IsTrue(item.data.baseData.properties.ContainsKey("TestProperty"));
        }
        private void SendTrace(LoggingEvent loggingEvent)
        {
            try
            {
                loggingEvent.GetProperties();
                string message = loggingEvent.RenderedMessage != null ? this.RenderLoggingEvent(loggingEvent) : "Log4Net Trace";

                var trace = new TraceTelemetry(message)
                {
                    SeverityLevel = this.GetSeverityLevel(loggingEvent.Level)
                };

                this.BuildCustomProperties(loggingEvent, trace);
                this.telemetryClient.Track(trace);
            }
            catch (ArgumentNullException exception)
            {
                throw new LogException(exception.Message, exception);
            }
        }
        public void NLogPropertyDuplicateKeyDuplicateValue()
        {
            var aiTarget = new PrivateObject(typeof(ApplicationInsightsTarget));
            var logEventInfo = new LogEventInfo();
            var loggerNameVal = "thisisaloggername";

            logEventInfo.LoggerName = loggerNameVal;
            logEventInfo.Properties.Add("LoggerName", loggerNameVal);

            var traceTelemetry = new TraceTelemetry();

            aiTarget.Invoke("BuildPropertyBag", logEventInfo, traceTelemetry);

            Assert.IsTrue(traceTelemetry.Properties.ContainsKey("LoggerName"));
            Assert.AreEqual(loggerNameVal, traceTelemetry.Properties["LoggerName"]);
        }
        private static void SerializeTraceTelemetry(TraceTelemetry traceTelemetry, JsonWriter writer)
        {
            writer.WriteStartObject();

            traceTelemetry.WriteTelemetryName(writer, TraceTelemetry.TelemetryName);
            traceTelemetry.WriteEnvelopeProperties(writer);
            writer.WritePropertyName("data");
            {
                writer.WriteStartObject();

                // TODO: MetricTelemetry should write type as this.data.baseType once Common Schema 2.0 compliant.
                writer.WriteProperty("baseType", traceTelemetry.BaseType);
                writer.WritePropertyName("baseData");
                {
                    writer.WriteStartObject();

                    writer.WriteProperty("ver", traceTelemetry.Data.ver);
                    writer.WriteProperty("message", traceTelemetry.Message);

                    if (traceTelemetry.SeverityLevel.HasValue)
                    {
                        writer.WriteProperty("severityLevel", traceTelemetry.SeverityLevel.Value.ToString());
                    }

                    writer.WriteProperty("properties", traceTelemetry.Properties); // TODO: handle case where the property dictionary doesn't need to be instantiated.

                    writer.WriteEndObject();
                }

                writer.WriteEndObject();
            }

            writer.WriteEndObject();
        }
Esempio n. 25
0
        public void TraceTelemetryImplementsISupportSamplingContract()
        {
            var telemetry = new TraceTelemetry();

            Assert.NotNull(telemetry as ISupportSampling);
        }
        private void SendTrace(LogEventInfo logEvent)
        {
            var trace = new TraceTelemetry(logEvent.FormattedMessage)
            {
                SeverityLevel = this.GetSeverityLevel(logEvent.Level)
            };

            this.BuildPropertyBag(logEvent, trace);
            this.telemetryClient.Track(trace);
        }
 /// <summary>
 /// Send a trace message for display in Diagnostic Search.
 /// </summary>
 /// <param name="telemetry">Message with optional properties.</param>
 public void TrackTrace(TraceTelemetry telemetry)
 {
     telemetry = telemetry ?? new TraceTelemetry();
     this.Track(telemetry);
 }
        /// <summary>
        /// Send a trace message for display in Diagnostic Search.
        /// </summary>
        /// <param name="message">Message to display.</param>
        /// <param name="severityLevel">Trace severity level.</param>
        /// <param name="properties">Named string values you can use to search and classify events.</param>
        public void TrackTrace(string message, SeverityLevel severityLevel, IDictionary<string, string> properties)
        {
            TraceTelemetry telemetry = new TraceTelemetry(message, severityLevel);

            if (properties != null && properties.Count > 0)
            {
                Utils.CopyDictionary(properties, telemetry.Context.Properties);
            }

            this.TrackTrace(telemetry);
        }
 public void Log(LogLevel logLevel, string message, System.Exception ex = null, Dictionary<string, string> propertyBag = null)
 {
     if (logLevel < _logManager.LogLevel)
     {
         return;
     }
     if (ex == null)
     {
         var tel = new TraceTelemetry(message, GetLevel(logLevel));
         tel.Properties.Add(new KeyValuePair<string, string>("Machine_name", _machine));
         tel.Properties.Add(new KeyValuePair<string, string>("User_name", _user));
         tel.Properties.Add(new KeyValuePair<string, string>("Domain_name", _domain));
         if (propertyBag != null)
         {
             foreach (var prop in propertyBag)
             {
                 tel.Properties.Add(prop.Key, prop.Value);
             }
         }
         _telemetryClient.TrackTrace(tel);
     }
     else
     {
         var tel = new ExceptionTelemetry(ex);
         tel.Properties.Add(new KeyValuePair<string, string>("Message", message));
         tel.Properties.Add(new KeyValuePair<string, string>("Machine_name", _machine));
         tel.Properties.Add(new KeyValuePair<string, string>("User_name", _user));
         tel.Properties.Add(new KeyValuePair<string, string>("Domain_name", _domain));
         if (logLevel < LogLevel.Fatal)
         {
             tel.HandledAt = ExceptionHandledAt.UserCode;
         }
         else
         {
             tel.HandledAt = ExceptionHandledAt.Unhandled;
         }
         tel.SeverityLevel = GetLevel(logLevel);
         if (propertyBag != null)
         {
             foreach (var prop in propertyBag)
             {
                 tel.Properties.Add(prop.Key, prop.Value);
             }
         }
         _telemetryClient.TrackException(tel);
         if (logLevel == LogLevel.Fatal)
         {
             _telemetryClient.Flush(); // quickly empty the cache as this might be an application crash
         }
     }
 }
        public void InitializeDoesNotOverrideCustomerOperationName()
        {
            var source = new TestableOperationNameTelemetryInitializer();
            source.FakeContext.CreateRequestTelemetryPrivate();
            var customerTelemetry = new TraceTelemetry("Text");
            customerTelemetry.Context.Operation.Name = "Name";

            source.Initialize(customerTelemetry);

            Assert.AreEqual("Name", customerTelemetry.Context.Operation.Name);
        }
        public ActionResult LogOff()
        {
            WebSecurity.Logout();

            var telemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();

            //Sample Trace telemetry
            TraceTelemetry traceSample = new TraceTelemetry();
            traceSample.Message = "Logged off";
            traceSample.SeverityLevel = SeverityLevel.Information;
            telemetryClient.TrackTrace(traceSample);

            return RedirectToAction("Index", "Home");
        }
        public ActionResult Register()
        {
            var telemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();

            //Sample Trace telemetry
            TraceTelemetry traceSample = new TraceTelemetry();
            traceSample.Message = "Database response - normal";
            traceSample.SeverityLevel = SeverityLevel.Information;
            telemetryClient.TrackTrace(traceSample);

            return View();
        }
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                try
                {
                    WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                    WebSecurity.Login(model.UserName, model.Password);

                    // Migrate the newly registered user's shopping cart
                    MigrateShoppingCart(model.UserName);

                    var telemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();

                    //Sample Trace telemetry
                    TraceTelemetry traceSample = new TraceTelemetry();
                    traceSample.Message = "Registered succesfully";
                    traceSample.SeverityLevel = SeverityLevel.Information;
                    telemetryClient.TrackTrace(traceSample);

                    return RedirectToAction("Index", "Home");
                }
                catch (MembershipCreateUserException e)
                {
                    var telemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();

                    //Sample Trace telemetry
                    TraceTelemetry traceSample = new TraceTelemetry();
                    traceSample.Message = "Registration failed";
                    traceSample.SeverityLevel = SeverityLevel.Error;
                    telemetryClient.TrackTrace(traceSample);

                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }