Cloud_RoleName通过ILogger不一致地获取值

时间:2018-08-29 22:06:17

标签: azure azure-web-sites azure-application-insights

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

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

虽然这有效,并且调用LogInformation()及其兄弟姐妹确实写入了我们的AI,但我注意到一个奇怪的地方是,某些记录似乎缺少cloud_RoleName(和cloud_RoleInstance)的值。

我知道我可以提供一个Telemetry初始化程序来手动设置该值,如果没有其他解决方案,我会回到这个问题。但是,我想了解这里发生了什么。应用数据的调用与未应用数据的调用之间似乎没有什么区别。

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

  private ILogger Logger { get; }

不起作用的是这样的:

  private readonly ILogger<ConnexeoPartnerLoginHandler> _logger;

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

更新

更改为与第一个类似的ILogger属性(正在为另一个调用工作的属性)对我来说没有任何区别。没想到,但是不得不尝试。

1 个答案:

答案 0 :(得分:-1)

对于无效的代码,请尝试使用构造函数方法初始化该字段,如下所示:

private readonly ILogger<ConnexeoPartnerLoginHandler> _logger;

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