<PackageReference Include="System.ClientModel" Version="1.6.1" />

ActivityExtensions

public static class ActivityExtensions
Extensions for Activity and ActivitySource that provide common Open Telemetry tracing functionality for clients built on System.ClientModel.
using System.Collections.Generic; using System.Diagnostics; using System.Runtime.CompilerServices; namespace System.ClientModel.Primitives { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public static class ActivityExtensions { private const string ScmScopeLabel = "scm.sdk.scope"; private static readonly object ScmScopeValue = bool.TrueString; [return: System.Runtime.CompilerServices.Nullable(2)] public static Activity StartClientActivity(this ActivitySource activitySource, ClientPipelineOptions options, string name, ActivityKind kind = ActivityKind.Internal, ActivityContext parentContext = default(ActivityContext), [System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1, 2 })] IEnumerable<KeyValuePair<string, object>> tags = null) { bool? enableDistributedTracing = options.EnableDistributedTracing; bool flag = false; if ((enableDistributedTracing.GetValueOrDefault() == flag) & enableDistributedTracing.HasValue) return null; bool flag2 = kind == ActivityKind.Client || kind == ActivityKind.Internal; bool flag3 = ScmScopeValue.Equals(Activity.Current?.GetCustomProperty("scm.sdk.scope")); if (flag2 & flag3) return null; Activity activity = activitySource.StartActivity(name, kind, parentContext, tags, null, default(DateTimeOffset)); if (flag2) activity?.SetCustomProperty("scm.sdk.scope", ScmScopeValue); return activity; } public static Activity MarkClientActivityFailed(this Activity activity, [System.Runtime.CompilerServices.Nullable(2)] Exception exception) { activity.SetStatus(ActivityStatusCode.Error, exception?.Message); string text = null; ClientResultException ex = exception as ClientResultException; if (ex != null) text = ex.Status.ToString(); if (text == null) text = exception?.GetType().FullName; if (text == null) text = "_OTHER"; activity.SetTag("error.type", text); return activity; } } }