17

我们在 ASP.NET Core 3.1 网站中使用 ILogger,使用 Microsoft.ApplicationInsights.AspNetCore 包,版本 2.14。我们正在尝试将信息性消息记录到 App Insight 中,例如。_logger.LogInformation("这里的信息')

在我们的 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 不尊重 Application Insights 的日志级别

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

从文档看来,这应该“正常工作”,但似乎没有。

<a href="https://docs.microsoft.com/en-us/azure/azure-monitor/app/ilogger#control-logging-level" rel="noreferrer">https://docs.microsoft。 com/en-us/azure/azure-monitor/app/ilogger#control-logging-level

我们哪里错了?

4

1 回答 1

24

你把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 文档中的配置日志记录。

于 2020-05-06T14:27:33.687 回答