Application Insights记录自定义属性

时间:2019-03-18 00:48:51

标签: c# azure azure-application-insights

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

我要为每个人添加

        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 个答案:

答案 0 :(得分:2)

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