-
Notifications
You must be signed in to change notification settings - Fork 97
/
TracingBuilderExtensions.cs
38 lines (34 loc) · 1.47 KB
/
TracingBuilderExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using DotVVM.Tracing.ApplicationInsights;
using DotVVM.Tracing.ApplicationInsights.Owin;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
namespace DotVVM.Framework.Configuration
{
public static class TracingBuilderExtensions
{
/// <summary>
/// Registers ApplicationInsightsTracer
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IDotvvmServiceCollection AddApplicationInsightsTracing(this IDotvvmServiceCollection services)
{
TelemetryConfiguration.Active.TelemetryProcessorChainBuilder.Use(next => new RequestTelemetryFilter(next)).Build();
TelemetryConfiguration.Active.TelemetryInitializers.Add(new OperationNameTelemetryInitializer());
services.Services.TryAddSingleton<TelemetryClient>();
services.AddDotvvmApplicationInsights();
services.Services.AddTransient<IConfigureOptions<DotvvmConfiguration>, ApplicationInsightSetup>();
return services;
}
}
internal class ApplicationInsightSetup : IConfigureOptions<DotvvmConfiguration>
{
public void Configure(DotvvmConfiguration options)
{
options.Markup.AddCodeControls("dot", typeof(ApplicationInsightsJavascript));
}
}
}