Skip to content

Commit 4c4a9ce

Browse files
committed
Merge from main.
2 parents 78eda0a + 49f16e4 commit 4c4a9ce

25 files changed

+379
-248
lines changed

OpenTelemetry.sln

-1
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{A49299
275275
src\Shared\SpanAttributeConstants.cs = src\Shared\SpanAttributeConstants.cs
276276
src\Shared\SpanHelper.cs = src\Shared\SpanHelper.cs
277277
src\Shared\StatusHelper.cs = src\Shared\StatusHelper.cs
278-
src\Shared\TagAndValueTransformer.cs = src\Shared\TagAndValueTransformer.cs
279278
src\Shared\TagTransformer.cs = src\Shared\TagTransformer.cs
280279
src\Shared\TagTransformerJsonHelper.cs = src\Shared\TagTransformerJsonHelper.cs
281280
EndProjectSection

src/OpenTelemetry.Exporter.Console/ConsoleActivityExporter.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public override ExportResult Export(in Batch<Activity> batch)
5656
continue;
5757
}
5858

59-
if (ConsoleTagTransformer.Instance.TryTransformTag(tag, out var result))
59+
if (this.TagTransformer.TryTransformTag(tag, out var result))
6060
{
6161
this.WriteLine($" {result}");
6262
}
@@ -88,7 +88,7 @@ public override ExportResult Export(in Batch<Activity> batch)
8888
this.WriteLine($" {activityEvent.Name} [{activityEvent.Timestamp}]");
8989
foreach (ref readonly var attribute in activityEvent.EnumerateTagObjects())
9090
{
91-
if (ConsoleTagTransformer.Instance.TryTransformTag(attribute, out var result))
91+
if (this.TagTransformer.TryTransformTag(attribute, out var result))
9292
{
9393
this.WriteLine($" {result}");
9494
}
@@ -104,7 +104,7 @@ public override ExportResult Export(in Batch<Activity> batch)
104104
this.WriteLine($" {activityLink.Context.TraceId} {activityLink.Context.SpanId}");
105105
foreach (ref readonly var attribute in activityLink.EnumerateTagObjects())
106106
{
107-
if (ConsoleTagTransformer.Instance.TryTransformTag(attribute, out var result))
107+
if (this.TagTransformer.TryTransformTag(attribute, out var result))
108108
{
109109
this.WriteLine($" {result}");
110110
}
@@ -118,7 +118,7 @@ public override ExportResult Export(in Batch<Activity> batch)
118118
this.WriteLine("Resource associated with Activity:");
119119
foreach (var resourceAttribute in resource.Attributes)
120120
{
121-
if (ConsoleTagTransformer.Instance.TryTransformTag(resourceAttribute, out var result))
121+
if (this.TagTransformer.TryTransformTag(resourceAttribute, out var result))
122122
{
123123
this.WriteLine($" {result}");
124124
}

src/OpenTelemetry.Exporter.Console/ConsoleExporter.cs

+11-4
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ public abstract class ConsoleExporter<T> : BaseExporter<T>
1111
protected ConsoleExporter(ConsoleExporterOptions options)
1212
{
1313
this.options = options ?? new ConsoleExporterOptions();
14-
ConsoleTagTransformer.LogUnsupportedAttributeType = (string tagValueType, string tagKey) =>
15-
{
16-
this.WriteLine($"Unsupported attribute type {tagValueType} for {tagKey}.");
17-
};
14+
15+
this.TagTransformer = new ConsoleTagTransformer(this.OnUnsupportedTagDropped);
1816
}
1917

18+
internal ConsoleTagTransformer TagTransformer { get; }
19+
2020
protected void WriteLine(string message)
2121
{
2222
if (this.options.Targets.HasFlag(ConsoleExporterOutputTargets.Console))
@@ -29,4 +29,11 @@ protected void WriteLine(string message)
2929
System.Diagnostics.Trace.WriteLine(message);
3030
}
3131
}
32+
33+
private void OnUnsupportedTagDropped(
34+
string tagKey,
35+
string tagValueTypeFullName)
36+
{
37+
this.WriteLine($"Unsupported attribute value type '{tagValueTypeFullName}' for '{tagKey}'.");
38+
}
3239
}

src/OpenTelemetry.Exporter.Console/ConsoleLogRecordExporter.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public override ExportResult Export(in Batch<LogRecord> batch)
9393
? new KeyValuePair<string, object>("OriginalFormat (a.k.a Body)", logRecord.Attributes[i].Value)
9494
: logRecord.Attributes[i];
9595

96-
if (ConsoleTagTransformer.Instance.TryTransformTag(valueToTransform, out var result))
96+
if (this.TagTransformer.TryTransformTag(valueToTransform, out var result))
9797
{
9898
this.WriteLine($"{string.Empty,-4}{result}");
9999
}
@@ -127,7 +127,7 @@ void ProcessScope(LogRecordScope scope, ConsoleLogRecordExporter exporter)
127127

128128
foreach (KeyValuePair<string, object> scopeItem in scope)
129129
{
130-
if (ConsoleTagTransformer.Instance.TryTransformTag(scopeItem, out var result))
130+
if (this.TagTransformer.TryTransformTag(scopeItem, out var result))
131131
{
132132
exporter.WriteLine($"[Scope.{scopeDepth}]:{result}");
133133
}
@@ -140,7 +140,7 @@ void ProcessScope(LogRecordScope scope, ConsoleLogRecordExporter exporter)
140140
this.WriteLine("\nResource associated with LogRecord:");
141141
foreach (var resourceAttribute in resource.Attributes)
142142
{
143-
if (ConsoleTagTransformer.Instance.TryTransformTag(resourceAttribute, out var result))
143+
if (this.TagTransformer.TryTransformTag(resourceAttribute, out var result))
144144
{
145145
this.WriteLine(result);
146146
}

src/OpenTelemetry.Exporter.Console/ConsoleMetricExporter.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public override ExportResult Export(in Batch<Metric> batch)
2727
this.WriteLine("Resource associated with Metric:");
2828
foreach (var resourceAttribute in this.resource.Attributes)
2929
{
30-
if (ConsoleTagTransformer.Instance.TryTransformTag(resourceAttribute, out var result))
30+
if (this.TagTransformer.TryTransformTag(resourceAttribute, out var result))
3131
{
3232
this.WriteLine($" {result}");
3333
}
@@ -67,7 +67,7 @@ public override ExportResult Export(in Batch<Metric> batch)
6767
foreach (var meterTag in metric.MeterTags)
6868
{
6969
this.WriteLine("\tMeter Tags:");
70-
if (ConsoleTagTransformer.Instance.TryTransformTag(meterTag, out var result))
70+
if (this.TagTransformer.TryTransformTag(meterTag, out var result))
7171
{
7272
this.WriteLine($"\t\t{result}");
7373
}
@@ -80,7 +80,7 @@ public override ExportResult Export(in Batch<Metric> batch)
8080
StringBuilder tagsBuilder = new StringBuilder();
8181
foreach (var tag in metricPoint.Tags)
8282
{
83-
if (ConsoleTagTransformer.Instance.TryTransformTag(tag, out var result))
83+
if (this.TagTransformer.TryTransformTag(tag, out var result))
8484
{
8585
tagsBuilder.Append(result);
8686
tagsBuilder.Append(' ');
@@ -216,7 +216,7 @@ public override ExportResult Export(in Batch<Metric> batch)
216216
bool appendedTagString = false;
217217
foreach (var tag in exemplar.FilteredTags)
218218
{
219-
if (ConsoleTagTransformer.Instance.TryTransformTag(tag, out var result))
219+
if (this.TagTransformer.TryTransformTag(tag, out var result))
220220
{
221221
if (!appendedTagString)
222222
{

src/OpenTelemetry.Exporter.Console/ConsoleTagTransformer.cs src/OpenTelemetry.Exporter.Console/Implementation/ConsoleTagTransformer.cs

+16-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4+
#nullable enable
5+
6+
using System.Diagnostics;
47
using OpenTelemetry.Internal;
58

69
namespace OpenTelemetry.Exporter;
710

811
internal sealed class ConsoleTagTransformer : TagTransformer<string>
912
{
10-
private ConsoleTagTransformer()
13+
private readonly Action<string, string> onUnsupportedTagDropped;
14+
15+
public ConsoleTagTransformer(Action<string, string> onUnsupportedTagDropped)
1116
{
12-
}
17+
Debug.Assert(onUnsupportedTagDropped != null, "onUnsupportedTagDropped was null");
1318

14-
public static ConsoleTagTransformer Instance { get; } = new();
19+
this.onUnsupportedTagDropped = onUnsupportedTagDropped!;
20+
}
1521

1622
protected override string TransformIntegralTag(string key, long value) => $"{key}: {value}";
1723

@@ -23,4 +29,11 @@ private ConsoleTagTransformer()
2329

2430
protected override string TransformArrayTag(string key, Array array)
2531
=> this.TransformStringTag(key, TagTransformerJsonHelper.JsonSerializeArrayTag(array));
32+
33+
protected override void OnUnsupportedTagDropped(
34+
string tagKey,
35+
string tagValueTypeFullName)
36+
{
37+
this.onUnsupportedTagDropped(tagKey, tagValueTypeFullName);
38+
}
2639
}

src/OpenTelemetry.Exporter.Console/OpenTelemetry.Exporter.Console.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
<Compile Include="$(RepoRoot)\src\Shared\Guard.cs" Link="Includes\Guard.cs" RequiresExposedExperimentalFeatures="true" />
3535
<Compile Include="$(RepoRoot)\src\Shared\DiagnosticDefinitions.cs" Link="Includes\DiagnosticDefinitions.cs" RequiresExposedExperimentalFeatures="true" />
3636
<Compile Include="$(RepoRoot)\src\Shared\ExceptionExtensions.cs" Link="Includes\ExceptionExtensions.cs" RequiresExposedExperimentalFeatures="true" />
37+
<Compile Include="$(RepoRoot)\src\Shared\Shims\NullableAttributes.cs" Link="Includes\Shims\NullableAttributes.cs" RequiresExposedExperimentalFeatures="true" />
3738
<Compile Include="$(RepoRoot)\src\Shared\SpanAttributeConstants.cs" Link="Includes\SpanAttributeConstants.cs" RequiresExposedExperimentalFeatures="true" />
3839
</ItemGroup>
3940

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/ActivityExtensions.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ private static Span.Types.Link ToOtlpLink(in ActivityLink activityLink, SdkLimit
237237
int maxTags = sdkLimitOptions.SpanLinkAttributeCountLimit ?? int.MaxValue;
238238
foreach (ref readonly var tag in activityLink.EnumerateTagObjects())
239239
{
240-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(tag, out var attribute, sdkLimitOptions.AttributeValueLengthLimit))
240+
if (OtlpTagTransformer.Instance.TryTransformTag(tag, out var attribute, sdkLimitOptions.AttributeValueLengthLimit))
241241
{
242242
if (otlpLink.Attributes.Count < maxTags)
243243
{
@@ -265,7 +265,7 @@ private static Span.Types.Event ToOtlpEvent(in ActivityEvent activityEvent, SdkL
265265
int maxTags = sdkLimitOptions.SpanEventAttributeCountLimit ?? int.MaxValue;
266266
foreach (ref readonly var tag in activityEvent.EnumerateTagObjects())
267267
{
268-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(tag, out var attribute, sdkLimitOptions.AttributeValueLengthLimit))
268+
if (OtlpTagTransformer.Instance.TryTransformTag(tag, out var attribute, sdkLimitOptions.AttributeValueLengthLimit))
269269
{
270270
if (otlpEvent.Attributes.Count < maxTags)
271271
{
@@ -322,7 +322,7 @@ public void EnumerateTags(Activity activity, int maxTags)
322322
continue;
323323
}
324324

325-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(tag, out var attribute, this.SdkLimitOptions.AttributeValueLengthLimit))
325+
if (OtlpTagTransformer.Instance.TryTransformTag(tag, out var attribute, this.SdkLimitOptions.AttributeValueLengthLimit))
326326
{
327327
if (this.Span.Attributes.Count < maxTags)
328328
{

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/MetricItemExtensions.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ internal static OtlpMetrics.Exemplar ToOtlpExemplar<T>(T value, in Metrics.Exemp
416416

417417
foreach (var tag in exemplar.FilteredTags)
418418
{
419-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(tag, out var result))
419+
if (OtlpTagTransformer.Instance.TryTransformTag(tag, out var result))
420420
{
421421
otlpExemplar.FilteredAttributes.Add(result);
422422
}
@@ -429,7 +429,7 @@ private static void AddAttributes(ReadOnlyTagCollection tags, RepeatedField<Otlp
429429
{
430430
foreach (var tag in tags)
431431
{
432-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(tag, out var result))
432+
if (OtlpTagTransformer.Instance.TryTransformTag(tag, out var result))
433433
{
434434
attributes.Add(result);
435435
}
@@ -440,7 +440,7 @@ private static void AddScopeAttributes(IEnumerable<KeyValuePair<string, object>>
440440
{
441441
foreach (var tag in meterTags)
442442
{
443-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(tag, out var result))
443+
if (OtlpTagTransformer.Instance.TryTransformTag(tag, out var result))
444444
{
445445
attributes.Add(result);
446446
}

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/OtlpKeyValueTransformer.cs

-81
This file was deleted.

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/OtlpLogRecordTransformer.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ internal OtlpLogs.LogRecord ToOtlpLog(LogRecord logRecord)
166166
{
167167
otlpLogRecord.Body = new OtlpCommon.AnyValue { StringValue = attribute.Value as string };
168168
}
169-
else if (OtlpKeyValueTransformer.Instance.TryTransformTag(attribute, out var result, attributeValueLengthLimit))
169+
else if (OtlpTagTransformer.Instance.TryTransformTag(attribute, out var result, attributeValueLengthLimit))
170170
{
171171
AddAttribute(otlpLogRecord, result, attributeCountLimit);
172172
}
@@ -224,7 +224,7 @@ void ProcessScope(LogRecordScope scope, OtlpLogs.LogRecord otlpLog)
224224
}
225225
else
226226
{
227-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(scopeItem, out var result, attributeValueLengthLimit))
227+
if (OtlpTagTransformer.Instance.TryTransformTag(scopeItem, out var result, attributeValueLengthLimit))
228228
{
229229
AddAttribute(otlpLog, result, attributeCountLimit);
230230
}
@@ -257,7 +257,7 @@ private static void AddAttribute(OtlpLogs.LogRecord logRecord, OtlpCommon.KeyVal
257257
private static void AddStringAttribute(OtlpLogs.LogRecord logRecord, string key, string value, int? maxValueLength, int maxAttributeCount)
258258
{
259259
var attributeItem = new KeyValuePair<string, object>(key, value);
260-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(attributeItem, out var result, maxValueLength))
260+
if (OtlpTagTransformer.Instance.TryTransformTag(attributeItem, out var result, maxValueLength))
261261
{
262262
AddAttribute(logRecord, result, maxAttributeCount);
263263
}
@@ -267,7 +267,7 @@ private static void AddStringAttribute(OtlpLogs.LogRecord logRecord, string key,
267267
private static void AddIntAttribute(OtlpLogs.LogRecord logRecord, string key, int value, int maxAttributeCount)
268268
{
269269
var attributeItem = new KeyValuePair<string, object>(key, value);
270-
if (OtlpKeyValueTransformer.Instance.TryTransformTag(attributeItem, out var result))
270+
if (OtlpTagTransformer.Instance.TryTransformTag(attributeItem, out var result))
271271
{
272272
AddAttribute(logRecord, result, maxAttributeCount);
273273
}

0 commit comments

Comments
 (0)