<PackageReference Include="Polly.Core" Version="8.4.2" />

ResilienceStrategyTelemetry

public sealed class ResilienceStrategyTelemetry
Resilience telemetry is used by individual resilience strategies to report some important events.
using Polly.Utils; using System.Runtime.CompilerServices; namespace Polly.Telemetry { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public sealed class ResilienceStrategyTelemetry { internal bool Enabled { get; } [System.Runtime.CompilerServices.Nullable(2)] [field: System.Runtime.CompilerServices.Nullable(2)] internal TelemetryListener Listener { [System.Runtime.CompilerServices.NullableContext(2)] get; } internal ResilienceTelemetrySource TelemetrySource { get; } internal ResilienceStrategyTelemetry(ResilienceTelemetrySource source, [System.Runtime.CompilerServices.Nullable(2)] TelemetryListener listener) { TelemetrySource = source; Listener = listener; Enabled = (listener != null); } public void Report<[System.Runtime.CompilerServices.Nullable(2)] TArgs>(ResilienceEvent resilienceEvent, ResilienceContext context, TArgs args) { Guard.NotNull(context, "context"); if (Listener != null && resilienceEvent.Severity != 0) { TelemetryListener listener = Listener; TelemetryEventArguments<object, TArgs> args2 = new TelemetryEventArguments<object, TArgs>(TelemetrySource, resilienceEvent, context, args, (Outcome<object>?)null); listener.Write<object, TArgs>(ref args2); } } public void Report<[System.Runtime.CompilerServices.Nullable(2)] TArgs, [System.Runtime.CompilerServices.Nullable(2)] TResult>(ResilienceEvent resilienceEvent, ResilienceContext context, [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] Outcome<TResult> outcome, TArgs args) { if (Listener != null && resilienceEvent.Severity != 0) { TelemetryListener listener = Listener; TelemetryEventArguments<TResult, TArgs> args2 = new TelemetryEventArguments<TResult, TArgs>(TelemetrySource, resilienceEvent, context, args, (Outcome<TResult>?)outcome); listener.Write<TResult, TArgs>(ref args2); } } internal void Report<[System.Runtime.CompilerServices.Nullable(0)] TArgs, [System.Runtime.CompilerServices.Nullable(2)] TResult>(ResilienceEvent resilienceEvent, TArgs args) where TArgs : IOutcomeArguments<TResult> { if (Listener != null && resilienceEvent.Severity != 0) { TelemetryListener listener = Listener; TelemetryEventArguments<TResult, TArgs> args2 = new TelemetryEventArguments<TResult, TArgs>(TelemetrySource, resilienceEvent, ((IOutcomeArguments<TResult>)args).Context, args, (Outcome<TResult>?)((IOutcomeArguments<TResult>)args).Outcome); listener.Write<TResult, TArgs>(ref args2); } } } }