我有一个应用程序(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属性(正在为另一个调用工作的属性)对我来说没有任何区别。没想到,但是不得不尝试。
答案 0 :(得分:-1)
对于无效的代码,请尝试使用构造函数方法初始化该字段,如下所示:
private readonly ILogger<ConnexeoPartnerLoginHandler> _logger;
public ConnexeoPartnerLoginHandler(ILogger<ConnexeoPartnerLoginHandler> logger)
{
_logger = logger;
}