AppMetrics 如何设置应用名称?

AppMetrics how to set application name?

我在我的 wcf 应用程序(App.Metrics 版本 3.1.0)中实现了 App.Metrics。 当我检查上传数据的 url 时,我发现 app 没有填写:

试图找出这种行为的原因,我找到了手册: https://www.app-metrics.io/getting-started/fundamentals/tagging-organizing/

它说需要填写 AssemblyName,但我仔细检查了它 - csproj 文件包含下一行:

<AssemblyName>MyWebService</AssemblyName>

如何在指标中填写此 app 属性?

startup.cs:

var metrics = MetricsProvider.Instance.Metrics;
SetMetricsAppTag(metrics, Assembly.GetExecutingAssembly().GetName().Name);   

private static void SetMetricsAppTag(IMetricsRoot metricsRoot, string appTagValue)
{
     if (!metricsRoot.Options.GlobalTags.ContainsKey("app"))
     {
           metricsRoot.Options.GlobalTags.Add("app", appTagValue);
     }
     else if (string.IsNullOrEmpty(metricsRoot.Options.GlobalTags["app"]) || metricsRoot.Options.GlobalTags["app"] == "unknown")
     {
           metricsRoot.Options.GlobalTags["app"] = appTagValue;
     }
}

更好的方法是在启动时执行-

var metrics = AppMetrics.CreateDefaultBuilder().
                Configuration.
                Configure(options => options.AddAppTag(appName: "nexus"))
               .Build();
            services.AddMetrics(metrics);
            services.AddMetricsTrackingMiddleware();
            services.AddMetricsEndpoints(opt =>
            {
                opt.MetricsTextEndpointOutputFormatter = new MetricsPrometheusTextOutputFormatter();
                opt.MetricsEndpointOutputFormatter = new MetricsPrometheusProtobufOutputFormatter();
                opt.EnvironmentInfoEndpointEnabled = false;
            });