<PackageReference Include="Polly.Core" Version="8.0.0-alpha.5" />

ResilienceStrategyTelemetry

public sealed class ResilienceStrategyTelemetry
Resilience telemetry is used by individual resilience strategies to report some important events.
using Polly.Utils; using System.Diagnostics; using System.Runtime.CompilerServices; namespace Polly.Telemetry { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public sealed class ResilienceStrategyTelemetry { [System.Runtime.CompilerServices.Nullable(2)] [field: System.Runtime.CompilerServices.Nullable(2)] internal DiagnosticSource DiagnosticSource { [System.Runtime.CompilerServices.NullableContext(2)] get; } internal ResilienceTelemetrySource TelemetrySource { get; } public bool IsEnabled => DiagnosticSource != null; internal ResilienceStrategyTelemetry(ResilienceTelemetrySource source, [System.Runtime.CompilerServices.Nullable(2)] DiagnosticSource diagnosticSource) { TelemetrySource = source; DiagnosticSource = diagnosticSource; } public void Report<[System.Runtime.CompilerServices.Nullable(2)] TArgs>(ResilienceEvent resilienceEvent, ResilienceContext context, TArgs args) { Guard.NotNull(context, "context"); context.AddResilienceEvent(resilienceEvent); if (DiagnosticSource != null && DiagnosticSource.IsEnabled(resilienceEvent.EventName) && resilienceEvent.Severity != 0) { TelemetryEventArguments telemetryEventArguments = TelemetryEventArguments.Get(TelemetrySource, resilienceEvent, context, null, args); DiagnosticSource.Write(resilienceEvent.EventName, telemetryEventArguments); TelemetryEventArguments.Return(telemetryEventArguments); } } [System.Runtime.CompilerServices.NullableContext(2)] public void Report<TArgs, TResult>(ResilienceEvent resilienceEvent, [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1, 1 })] OutcomeArguments<TResult, TArgs> args) { args.Context.AddResilienceEvent(resilienceEvent); if (DiagnosticSource != null && DiagnosticSource.IsEnabled(resilienceEvent.EventName) && resilienceEvent.Severity != 0) { TelemetryEventArguments telemetryEventArguments = TelemetryEventArguments.Get(TelemetrySource, resilienceEvent, args.Context, args.Outcome.AsOutcome(), args.Arguments); DiagnosticSource.Write(resilienceEvent.EventName, telemetryEventArguments); TelemetryEventArguments.Return(telemetryEventArguments); } } } }