From 7edd9b47f7f0f3cb45addf6b23d0a89f02412ab9 Mon Sep 17 00:00:00 2001 From: Timothy Mothra Lee Date: Tue, 6 Jun 2023 13:43:08 -0700 Subject: [PATCH 1/8] update OpenTelemetry v1.5.0 --- eng/Packages.Data.props | 14 +++++------ .../src/Internals/LogsHelper.cs | 4 ++-- .../LogsHelperTests.cs | 24 ++++++++----------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props index 9638a118cd65..0235ba7f8225 100644 --- a/eng/Packages.Data.props +++ b/eng/Packages.Data.props @@ -120,13 +120,13 @@ - - + + - - - - + + + + @@ -266,7 +266,7 @@ - + diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/LogsHelper.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/LogsHelper.cs index 7f7b08cccce2..55a5c75fb9eb 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/LogsHelper.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/LogsHelper.cs @@ -66,9 +66,9 @@ internal static List OtelToAzureMonitorLogs(Batch batc { string? message = logRecord.Exception?.Message ?? logRecord.FormattedMessage; - if (logRecord.StateValues != null) + if (logRecord.Attributes != null) { - ExtractProperties(ref message, properties, logRecord.StateValues); + ExtractProperties(ref message, properties, logRecord.Attributes); } WriteScopeInformation(logRecord, properties); diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs index 32342586f860..729c7a0cbce8 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs @@ -24,6 +24,9 @@ public class LogsHelperTests [InlineData(false)] public void MessageIsSetToExceptionMessage(bool parseStateValues) { + // ParseStateValues will be ignored unless the log contains an unknown objects. + // https://github.com/open-telemetry/opentelemetry-dotnet/pull/4334 + var logRecords = new List(); using var loggerFactory = LoggerFactory.Create(builder => { @@ -52,20 +55,13 @@ public void MessageIsSetToExceptionMessage(bool parseStateValues) Assert.Equal("Test Exception", message); - if (parseStateValues) - { - Assert.True(properties.TryGetValue("OriginalFormat", out string value)); - Assert.Equal(log, value); - Assert.True(properties.TryGetValue("name", out string name)); - Assert.Equal("tomato", name); - Assert.True(properties.TryGetValue("price", out string price)); - Assert.Equal("2.99", price); - Assert.Equal(3, properties.Count); - } - else - { - Assert.Empty(properties); - } + Assert.True(properties.TryGetValue("OriginalFormat", out string value)); + Assert.Equal(log, value); + Assert.True(properties.TryGetValue("name", out string name)); + Assert.Equal("tomato", name); + Assert.True(properties.TryGetValue("price", out string price)); + Assert.Equal("2.99", price); + Assert.Equal(3, properties.Count); } [Fact] From 684ae7eed45a1c74e6f0c3bfb0cb5b78214eb0c1 Mon Sep 17 00:00:00 2001 From: Timothy Mothra Lee Date: Tue, 6 Jun 2023 14:59:51 -0700 Subject: [PATCH 2/8] remove ParseStateValues = true --- .../src/AzureMonitorExporterLoggingExtensions.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterLoggingExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterLoggingExtensions.cs index 774994b1c523..7767c9e04d82 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterLoggingExtensions.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterLoggingExtensions.cs @@ -31,10 +31,6 @@ public static OpenTelemetryLoggerOptions AddAzureMonitorLogExporter(this OpenTel throw new ArgumentNullException(nameof(loggerOptions)); } - // Ideally user should set this to true - // but if they miss we may have an issue of missing state values which gets converted to custom dimensions. - loggerOptions.ParseStateValues = true; - var options = new AzureMonitorExporterOptions(); configure?.Invoke(options); From 5b738d864b6735ea9e2350d34361a690a130b009 Mon Sep 17 00:00:00 2001 From: Timothy Mothra Lee Date: Tue, 6 Jun 2023 15:42:02 -0700 Subject: [PATCH 3/8] update changelog --- .../Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md | 8 ++++++++ .../Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md index fa8e075ca477..8d03efe09548 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md @@ -10,6 +10,14 @@ ### Other Changes +* Update OpenTelemetry dependencies + ([#36859](https://github.com/Azure/azure-sdk-for-net/pull/36859)) + - OpenTelemetry 1.5.0 + - OpenTelemetry.Extensions.Hosting 1.5.0 + - OpenTelemetry.Instrumentation.AspNetCore 1.5.0-beta.1 + - OpenTelemetry.Instrumentation.Http 1.5.0-beta.1 + - OpenTelemetry.Instrumentation.SqlClient 1.5.0-beta.1 + ## 1.0.0-beta.4 (2023-05-09) ### Features Added diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md index 6669535df6dc..b24fe6eb3d95 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +* Update OpenTelemetry dependencies + ([#36859](https://github.com/Azure/azure-sdk-for-net/pull/36859)) + - OpenTelemetry 1.5.0 + ## 1.0.0-beta.12 (2023-06-06) ### Features Added From b649b0fca63b9120893aa9cd6f2b1524c28bf4ad Mon Sep 17 00:00:00 2001 From: Timothy Mothra Lee Date: Tue, 6 Jun 2023 17:01:57 -0700 Subject: [PATCH 4/8] update ParseStateValues in remaining tests --- .../src/OpenTelemetryBuilderExtensions.cs | 1 - .../E2ETelemetryItemValidation/LogsTests.cs | 1 - .../E2ETelemetryItemValidation/TracesTests.cs | 1 - .../LogsHelperTests.cs | 40 +++---------------- .../MessageDataTests.cs | 1 - .../TelemetryExceptionDataTests.cs | 5 --- 6 files changed, 5 insertions(+), 44 deletions(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs index e8d3ca0903a2..bdb7cd1bda7b 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/OpenTelemetryBuilderExtensions.cs @@ -111,7 +111,6 @@ public static OpenTelemetryBuilder UseAzureMonitor(this OpenTelemetryBuilder bui logging.AddOpenTelemetry(builderOptions => { builderOptions.IncludeFormattedMessage = true; - builderOptions.ParseStateValues = true; builderOptions.IncludeScopes = false; }); }); diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/LogsTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/LogsTests.cs index 66f859d49465..a292b801ed8a 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/LogsTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/LogsTests.cs @@ -48,7 +48,6 @@ public void VerifyLog(LogLevel logLevel, string expectedSeverityLevel) .AddFilter(logCategoryName, logLevel) .AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddAzureMonitorLogExporterForTest(out telemetryItems); }); }); diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/TracesTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/TracesTests.cs index 74a28bb4703d..6738be273539 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/TracesTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/E2ETelemetryItemValidation/TracesTests.cs @@ -220,7 +220,6 @@ public void VerifyLogWithinActivity(LogLevel logLevel, string expectedSeverityLe .AddFilter(logCategoryName, logLevel) .AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddAzureMonitorLogExporterForTest(out logTelemetryItems); }); }); diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs index 729c7a0cbce8..99a931fb7507 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/LogsHelperTests.cs @@ -73,7 +73,6 @@ public void MessageIsSetToFormattedMessageWhenIncludeFormattedMessageIsSet() builder.AddOpenTelemetry(options => { options.IncludeFormattedMessage = true; - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(LogsHelperTests).FullName, LogLevel.Trace); @@ -105,7 +104,6 @@ public void MessageIsSetToOriginalFormatWhenIncludeFormattedMessageIsNotSet() { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(LogsHelperTests).FullName, LogLevel.Trace); @@ -128,15 +126,17 @@ public void MessageIsSetToOriginalFormatWhenIncludeFormattedMessageIsNotSet() Assert.Equal(2, properties.Count); } - [Fact] - public void PropertiesContainFieldsFromStructuredLogs() + [Theory] + [InlineData(true)] + [InlineData(false)] + public void PropertiesContainFieldsFromStructuredLogs(bool parseStateValues) { var logRecords = new List(); using var loggerFactory = LoggerFactory.Create(builder => { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; + options.ParseStateValues = parseStateValues; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(LogsHelperTests).FullName, LogLevel.Trace); @@ -157,34 +157,6 @@ public void PropertiesContainFieldsFromStructuredLogs() Assert.Equal(2, properties.Count); } - [Fact] - public void PropertiesContainFieldsFromStructuredLogsIfParseStateValuesIsSet() - { - var logRecords = new List(); - using var loggerFactory = LoggerFactory.Create(builder => - { - builder.AddOpenTelemetry(options => - { - options.ParseStateValues = true; - options.AddInMemoryExporter(logRecords); - }); - builder.AddFilter(typeof(LogsHelperTests).FullName, LogLevel.Trace); - }); - - var logger = loggerFactory.CreateLogger(); - - logger.LogInformation("{Name} {Price}!", "Tomato", 2.99); - - var properties = new ChangeTrackingDictionary(); - LogsHelper.GetMessageAndSetProperties(logRecords[0], properties); - - Assert.True(properties.TryGetValue("Name", out string name)); - Assert.Equal("Tomato", name); - Assert.True(properties.TryGetValue("Price", out string price)); - Assert.Equal("2.99", price); - Assert.Equal(2, properties.Count); - } - [Fact] public void PropertiesContainEventIdAndEventNameIfSetOnLog() { @@ -193,7 +165,6 @@ public void PropertiesContainEventIdAndEventNameIfSetOnLog() { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(LogsHelperTests).FullName, LogLevel.Trace); @@ -235,7 +206,6 @@ public void ValidateTelemetryItem(string type) { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(LogsHelperTests).FullName, LogLevel.Trace); diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/MessageDataTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/MessageDataTests.cs index 4e4debf47718..ebeacb8c1d83 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/MessageDataTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/MessageDataTests.cs @@ -28,7 +28,6 @@ public void ValidateMessageData(LogLevel logLevel) { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(LogsHelperTests).FullName, LogLevel.Trace); diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryExceptionDataTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryExceptionDataTests.cs index 4fa39021fb9d..dd177f0ccf30 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryExceptionDataTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryExceptionDataTests.cs @@ -188,7 +188,6 @@ public void ExceptionDataContainsExceptionDetails() { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(TelemetryExceptionDataTests).FullName, LogLevel.Trace); @@ -212,7 +211,6 @@ public void ExceptionDataContainsExceptionDetailsofAllInnerExceptionsOfAggregate { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(TelemetryExceptionDataTests).FullName, LogLevel.Trace); @@ -248,7 +246,6 @@ public void ExceptionDataContainsExceptionDetailsWithAllInnerExceptions() { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(TelemetryExceptionDataTests).FullName, LogLevel.Trace); @@ -282,7 +279,6 @@ public void AggregateExceptionsWithMultipleNestedExceptionsAreTrimmedAfterReachi { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(TelemetryExceptionDataTests).FullName, LogLevel.Trace); @@ -351,7 +347,6 @@ public void ValidateTelemetryExceptionData(LogLevel logLevel) { builder.AddOpenTelemetry(options => { - options.ParseStateValues = true; options.AddInMemoryExporter(logRecords); }); builder.AddFilter(typeof(TelemetryExceptionDataTests).FullName, LogLevel.Trace); From da2ae43b5d866fb6d1598b65f740a4931a604578 Mon Sep 17 00:00:00 2001 From: Timothy Mothra Lee Date: Wed, 14 Jun 2023 14:47:56 -0700 Subject: [PATCH 5/8] update package version --- eng/Packages.Data.props | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props index d997dcfdbba2..8fb67a082ede 100644 --- a/eng/Packages.Data.props +++ b/eng/Packages.Data.props @@ -120,7 +120,8 @@ - + + From 1f6230cce0b3e72b6e57b4e665acab1549c6740c Mon Sep 17 00:00:00 2001 From: Timothy Mothra Lee Date: Wed, 14 Jun 2023 14:48:29 -0700 Subject: [PATCH 6/8] cleanup --- eng/Packages.Data.props | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props index 8fb67a082ede..5438551f97d6 100644 --- a/eng/Packages.Data.props +++ b/eng/Packages.Data.props @@ -120,7 +120,6 @@ - From 603104ee03660cddbb6115032ab5a345fed7a5c9 Mon Sep 17 00:00:00 2001 From: Timothy Mothra Lee Date: Wed, 14 Jun 2023 16:02:20 -0700 Subject: [PATCH 7/8] revert --- eng/Packages.Data.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props index 5438551f97d6..d997dcfdbba2 100644 --- a/eng/Packages.Data.props +++ b/eng/Packages.Data.props @@ -120,7 +120,7 @@ - + From c2551698bd5f33c9300abbe45b75e94f2217dc05 Mon Sep 17 00:00:00 2001 From: Timothy Mothra Date: Wed, 14 Jun 2023 16:08:06 -0700 Subject: [PATCH 8/8] Update CHANGELOG.md remove whitespace --- sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md index 1ff1e94942c2..dec7587d3abf 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md @@ -19,7 +19,6 @@ * Remove metric namespace mapping. ([#36968](https://github.com/Azure/azure-sdk-for-net/pull/36968)) - ## 1.0.0-beta.12 (2023-06-06) ### Features Added