diff --git a/backend/extensions/Squidex.Extensions/APM/ApplicationInsights/ApplicationInsightsPlugin.cs b/backend/extensions/Squidex.Extensions/APM/ApplicationInsights/ApplicationInsightsPlugin.cs index b52065f9c..95d5f5c88 100644 --- a/backend/extensions/Squidex.Extensions/APM/ApplicationInsights/ApplicationInsightsPlugin.cs +++ b/backend/extensions/Squidex.Extensions/APM/ApplicationInsights/ApplicationInsightsPlugin.cs @@ -8,6 +8,7 @@ using System; using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; +using Microsoft.ApplicationInsights.Extensibility; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; @@ -42,6 +43,7 @@ namespace Squidex.Extensions.APM.ApplicationInsights { services.AddSingleton(this); services.AddApplicationInsightsTelemetry(); + services.AddSingleton(); } } } diff --git a/backend/extensions/Squidex.Extensions/APM/ApplicationInsights/RoleNameTelemetryInitializer.cs b/backend/extensions/Squidex.Extensions/APM/ApplicationInsights/RoleNameTelemetryInitializer.cs new file mode 100644 index 000000000..22107f4cd --- /dev/null +++ b/backend/extensions/Squidex.Extensions/APM/ApplicationInsights/RoleNameTelemetryInitializer.cs @@ -0,0 +1,36 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using Microsoft.ApplicationInsights.Channel; +using Microsoft.ApplicationInsights.Extensibility; +using Microsoft.Extensions.Configuration; + +namespace Squidex.Extensions.APM.ApplicationInsights +{ + public sealed class RoleNameTelemetryInitializer : ITelemetryInitializer + { + private readonly string roleName; + + public RoleNameTelemetryInitializer(IConfiguration configuration) + { + roleName = configuration.GetValue("logging:roleName"); + + if (string.IsNullOrWhiteSpace(roleName)) + { + roleName = "Squidex"; + } + } + + public void Initialize(ITelemetry telemetry) + { + if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName)) + { + telemetry.Context.Cloud.RoleName = roleName; + } + } + } +}