我想要一个共享的应用程序见解实例,该实例将保存来自运行中的不同微服务的所有日志。

我为他们每个人添加

        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");
    }
}


还是共享应用程序见解实例并在一堆中提供所有日志和遥测信息,通常是个坏主意吗?

最佳答案

您可以使用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 ());

10-06 13:26