首页 > 解决方案 > Cloud_RoleName 通过 ILogger 不一致地获取值

问题描述

我有一个应用程序(dotnet core 2.0),它通过 ILogger 机制将遥测数据发送到我们的 AppInsights 实例

// Startup.cs :: Configure() factory.AddApplicationInsights(app.ApplicationServices, LogLevel.Information);

虽然这是有效的,并且调用LogInformation()和它的兄弟确实确实写入了我们的 AI,但我注意到一些记录似乎缺少 cloud_RoleName(和 cloud_RoleInstance)的值。

我知道我可以提供一个遥测初始化程序来手动设置这个值,如果另一个解决方案失败,我会回到这个。但是,我想了解这里发生了什么。应用数据的调用和不应用数据的调用之间似乎没有任何区别。

我看到的唯一区别(只是刚刚注意到,所以还没有测试)是其中一个有效的方法是在一个带有 ILogger 的类中,如下所示:

  private ILogger Logger { get; }

一个不起作用的是:

  private readonly ILogger<ConnexeoPartnerLoginHandler> _logger;

这两者之间有一些差异,所以我需要测试其中的一些变化,看看它们是否会对输出产生任何影响。

更新

更改为类似于第一个属性的 ILogger 属性(用于另一个呼叫的属性)对我没有任何影响。没想到,但不得不尝试。

标签: azureazure-web-app-serviceazure-application-insights

解决方案


对于不起作用的代码,请尝试在构造方法中初始化字段,如下所示:

private readonly ILogger<ConnexeoPartnerLoginHandler> _logger;

public ConnexeoPartnerLoginHandler(ILogger<ConnexeoPartnerLoginHandler> logger)
{
     _logger = logger;
}

推荐阅读