Skip to content

Commit f344cd9

Browse files
committed
Add Telemetry
1 parent 134e1a0 commit f344cd9

4 files changed

Lines changed: 59 additions & 11 deletions

File tree

src/plugins/ConsolePollyTest/ConsolePollyTest.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11+
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.6" />
12+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.6" />
1113
<PackageReference Include="Polly.Core" Version="8.6.1" />
1214
<PackageReference Include="Polly.Extensions" Version="8.6.1" />
1315
</ItemGroup>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Polly.Telemetry;
2+
3+
namespace ConsolePollyTest;
4+
5+
internal sealed class MyMeteringEnricher : MeteringEnricher
6+
{
7+
public override void Enrich<TResult, TArgs>(in EnrichmentContext<TResult, TArgs> context)
8+
{
9+
context.Tags.Add(new("my-custom-tag", "custom-value"));
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Polly.Telemetry;
2+
3+
namespace ConsolePollyTest;
4+
5+
internal sealed class MyTelemetryListener : TelemetryListener
6+
{
7+
public override void Write<TResult, TArgs>(in TelemetryEventArguments<TResult, TArgs> args)
8+
{
9+
Console.WriteLine($"Telemetry event occurred: {args.Event.EventName}");
10+
}
11+
}

src/plugins/ConsolePollyTest/PollyTest.cs

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
using Microsoft.Extensions.Logging;
12
using Polly;
23
using Polly.Retry;
4+
using Polly.Telemetry;
35

46
namespace ConsolePollyTest;
57

@@ -21,6 +23,19 @@ private static Uri GetUri(string path)
2123
return new Uri(Host, path);
2224
}
2325

26+
private static TelemetryOptions GetTelemetry()
27+
{
28+
var telemetryOptions = new TelemetryOptions
29+
{
30+
// Configure logging
31+
LoggerFactory = LoggerFactory.Create(builder => builder.AddConsole()),
32+
};
33+
telemetryOptions.TelemetryListeners.Add(new MyTelemetryListener());
34+
telemetryOptions.MeteringEnrichers.Add(new MyMeteringEnricher());
35+
36+
return telemetryOptions;
37+
}
38+
2439
public static async Task NoStrategy_TestAsync()
2540
{
2641
var builder = new ResiliencePipelineBuilder();
@@ -41,17 +56,26 @@ public static async Task NoStrategy_TestAsync()
4156

4257
public static async Task Retry_ExecThree_TestAsync()
4358
{
44-
var builder = new ResiliencePipelineBuilder().AddRetry(
45-
new RetryStrategyOptions
46-
{
47-
Delay = TimeSpan.FromSeconds(1),
48-
MaxRetryAttempts = 2,
49-
ShouldHandle = (args) =>
50-
{
51-
Console.WriteLine(args.AttemptNumber);
52-
return ValueTask.FromResult(args.AttemptNumber >= 0);
53-
}
54-
});
59+
var builder = new ResiliencePipelineBuilder().ConfigureTelemetry(GetTelemetry())
60+
.AddRetry(
61+
new RetryStrategyOptions
62+
{
63+
Delay = TimeSpan.FromSeconds(1),
64+
//MaxDelay =
65+
BackoffType = DelayBackoffType.Exponential,
66+
UseJitter = true,
67+
MaxRetryAttempts = 2,
68+
//DelayGenerator = (args) =>
69+
// {
70+
// return ValueTask.FromResult(
71+
// (TimeSpan?)TimeSpan.FromSeconds(Math.Pow(2, args.AttemptNumber)));
72+
// },
73+
ShouldHandle = (args) =>
74+
{
75+
Console.WriteLine(args.AttemptNumber);
76+
return ValueTask.FromResult(args.AttemptNumber >= 0);
77+
}
78+
});
5579
var pipeline = builder.Build();
5680

5781
using var client = GetClient();

0 commit comments

Comments
 (0)