diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/TelemetryPartA.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/TelemetryPartA.cs index 755ea04dd5915..39b2e405a0460 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/TelemetryPartA.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/TelemetryPartA.cs @@ -18,6 +18,7 @@ namespace Azure.Monitor.OpenTelemetry.Exporter /// internal class TelemetryPartA { + private const string DateTimeFormat = "yyyy-MM-ddTHH:mm:ss.fffffffZ"; private static readonly IReadOnlyDictionary PartA_Name_Mapping = new Dictionary { [TelemetryType.Request] = "Request", @@ -32,7 +33,7 @@ internal class TelemetryPartA internal static TelemetryItem GetTelemetryItem(Activity activity, Resource resource, string instrumentationKey) { - TelemetryItem telemetryItem = new TelemetryItem(PartA_Name_Mapping[activity.GetTelemetryType()], activity.StartTimeUtc.ToString(CultureInfo.InvariantCulture)) + TelemetryItem telemetryItem = new TelemetryItem(PartA_Name_Mapping[activity.GetTelemetryType()], FormatUtcTimestamp(activity.StartTimeUtc)) { InstrumentationKey = instrumentationKey }; @@ -55,7 +56,7 @@ internal static TelemetryItem GetTelemetryItem(Activity activity, Resource resou internal static TelemetryItem GetTelemetryItem(LogRecord logRecord, string instrumentationKey) { var name = PartA_Name_Mapping[TelemetryType.Message]; - var time = logRecord.Timestamp.ToString(CultureInfo.InvariantCulture); + var time = FormatUtcTimestamp(logRecord.Timestamp); TelemetryItem telemetryItem = new TelemetryItem(name, time) { @@ -122,5 +123,10 @@ internal static void InitRoleInfo(Resource resource) RoleName = serviceName; } } + + internal static string FormatUtcTimestamp(System.DateTime utcTimestamp) + { + return utcTimestamp.ToString(DateTimeFormat, CultureInfo.InvariantCulture); + } } } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryPartATests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryPartATests.cs index c35cbd499fc83..45f7102f20388 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryPartATests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/TelemetryPartATests.cs @@ -116,7 +116,7 @@ public void GeneratePartAEnvelope_DefaultActivity_DefaultResource() var telemetryItem = TelemetryPartA.GetTelemetryItem(activity, resource, null); Assert.Equal("RemoteDependency", telemetryItem.Name); - Assert.Equal(activity.StartTimeUtc.ToString(CultureInfo.InvariantCulture), telemetryItem.Time); + Assert.Equal(TelemetryPartA.FormatUtcTimestamp(activity.StartTimeUtc), telemetryItem.Time); Assert.StartsWith("unknown_service", telemetryItem.Tags[ContextTagKeys.AiCloudRole.ToString()]); Assert.Null(telemetryItem.Tags[ContextTagKeys.AiCloudRoleInstance.ToString()]); Assert.NotNull(telemetryItem.Tags[ContextTagKeys.AiOperationId.ToString()]); @@ -133,7 +133,7 @@ public void GeneratePartAEnvelope_Activity_WithResource() var telemetryItem = TelemetryPartA.GetTelemetryItem(activity, resource, null); Assert.Equal("RemoteDependency", telemetryItem.Name); - Assert.Equal(activity.StartTimeUtc.ToString(CultureInfo.InvariantCulture), telemetryItem.Time); + Assert.Equal(TelemetryPartA.FormatUtcTimestamp(activity.StartTimeUtc), telemetryItem.Time); Assert.Equal("my-service", telemetryItem.Tags[ContextTagKeys.AiCloudRole.ToString()]); Assert.Equal("my-instance", telemetryItem.Tags[ContextTagKeys.AiCloudRoleInstance.ToString()]); Assert.Equal(activity.TraceId.ToHexString(), telemetryItem.Tags[ContextTagKeys.AiOperationId.ToString()]);