Application Insights Журналы пользовательских свойств - PullRequest
2 голосов
/ 18 марта 2019

Я хочу, чтобы был запущен экземпляр общего доступа к приложениям, в котором будут храниться все журналы с разных микросервисов.

Для каждого из них я добавляю

        services.AddLogging(
            loggingBuilder =>
            {
                loggingBuilder
                .SetMinimumLevel(settings.LogLevel)
                .AddApplicationInsights();
            }
        );

Но затем на портале AzureЯ хочу иметь возможность искать журналы для отдельных приложений, например, используя запрос типа "applicationName = 'MyAppName'".

Можно ли настроить loggingBuilder, чтобы добавить в это пользовательское свойство applicationName длябыть MyAppName?

Само ведение журнала ведется как

public void MyMethod()
{
    try
    {
      //whatever
    }
    catch (Exception ex)
    {
      logger.LogError(ex, "Meaningful information");
    }
} 

Или это вообще плохая идея - делиться инстинктами приложения и иметь все журналы и телеметрию доступными в одной куче?

1 Ответ

2 голосов
/ 18 марта 2019

Вы можете использовать ITelemetryInitializer для установки имени роли

    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
            {
                //set custom role name here
                telemetry.Context.Cloud.RoleName = "RoleName";
            }
        }
    }

Тогда, если его ядро ​​.net зарегистрирует его

  services.AddSingleton<ITelemetryInitializer>(new MyTelemetryInitializer ());
...