我们在 ASP.NET Core 3.1 网站中使用
ILogger
,使用 Microsoft.ApplicationInsights.AspNetCore
包,版本 2.14。我们正在尝试将信息消息记录到 App Insight 中,例如 _logger.LogInformation("info here")
。
在我们的启动中
ConfigureServices
,我们启用了App Insights:
services.AddApplicationInsightsTelemetry();
我们的 appsettings.json 文件中有以下内容:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ApplicationInsights": {
"InstrumentationKey": "12345678-1234-5678-1234-1234567890ab",
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
它正确地获取应用程序洞察密钥(我们确实获得了正常指标和异常等日志条目),但是我们对
logger.LogInformation("Info here")
的调用都没有发送/记录在 App Insight 仪表板中。
我发现这个问题很相似:
但是答案仍然没有真正解决如何从 appsettings.json 文件更改日志级别与将日志级别硬编码到代码中。
从文档来看,这似乎应该“有效”,但事实似乎并非如此。
我们哪里出了问题?
您将
LogLevel
的 ApplicationInsights
属性放在了错误的位置。它应该是这样的:
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
},
"ApplicationInsights": {
"InstrumentationKey": "12345678-1234-5678-1234-1234567890ab"
}
日志级别配置位于
Logging
父级下,但 InstrumentationKey
位于该层次结构之外。
请参阅官方 ASP.NET Core 文档中的配置日志记录,了解有关特定于提供程序的配置的更多信息。
另外如何自定义 ILogger 日志收集? 有关 ASP.NET Core 应用程序的 Application Insights 的文档