public void LogMetric_WithMetric_CreatesMetricTelemetry() { // Arrange const string metricName = "Request stream"; const double metricValue = 0.13; var timestamp = DateTimeOffset.UtcNow; var spySink = new InMemoryLogSink(); string operationId = $"operation-id-{Guid.NewGuid()}"; ILogger logger = CreateLogger(spySink, config => config.Enrich.WithProperty(ContextProperties.Correlation.OperationId, operationId)); var telemetryContext = new Dictionary <string, object> { ["Capacity"] = "0.45" }; logger.LogMetric(metricName, metricValue, timestamp, telemetryContext); LogEvent logEvent = Assert.Single(spySink.CurrentLogEmits); Assert.NotNull(logEvent); var converter = ApplicationInsightsTelemetryConverter.Create(); // Act IEnumerable <ITelemetry> telemetries = converter.Convert(logEvent, formatProvider: null); // Assert AssertDoesNotContainLogProperty(logEvent, MetricTracking.MetricLogEntry); Assert.Collection(telemetries, telemetry => { var metricTelemetry = Assert.IsType <MetricTelemetry>(telemetry); Assert.Equal(metricName, metricTelemetry.Name); Assert.Equal(metricValue, metricTelemetry.Sum); Assert.Equal(timestamp, metricTelemetry.Timestamp); AssertOperationContext(metricTelemetry, operationId); AssertContainsTelemetryProperty(metricTelemetry, "Capacity", "0.45"); }); }