为什么应用程序设置中的 App Insight LogLevel 被忽略?

问题描述 投票:0回答:1

我们在 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 仪表板中。

我发现这个问题很相似:

ILogger 不尊重应用程序洞察的日志级别

但是答案仍然没有真正解决如何从 appsettings.json 文件更改日志级别与将日志级别硬编码到代码中。

从文档来看,这似乎应该“有效”,但事实似乎并非如此。

使用 .NET 进行应用程序洞察日志记录

我们哪里出了问题?

c# asp.net-core .net-core appinsights
1个回答
58
投票

您将

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 的文档

© www.soinside.com 2019 - 2024. All rights reserved.