// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System; using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Plugins; namespace Squidex.Extensions.APM.ApplicationInsights { public sealed class ApplicationInsightsPlugin : IPlugin, IStartupFilter { public Action Configure(Action next) { return builder => { var client = builder.ApplicationServices.GetRequiredService(); Profiler.SpanStarted += session => { session.Listen(client.StartOperation(session.Key)); }; next(builder); }; } public void ConfigureServices(IServiceCollection services, IConfiguration config) { var isEnabled = config.GetValue("logging:applicationInsights"); if (isEnabled) { services.AddSingleton(this); services.AddApplicationInsightsTelemetry(); } } } }