【问题标题】:Restrict log messages sent to appinsight from my App Service限制从我的应用服务发送到 appinsight 的日志消息
【发布时间】:2019-06-18 19:21:26
【问题描述】:

我的应用服务正在使用 TelemetryClient 登录到 appinsights。这工作正常,我按预期记录了所有内容。我遇到的问题是它现在记录的太多了,而我的 appinsights 成本太高了。我需要通过仅捕获警告和错误来减少日志记录,但如果出现问题,则能够记录调试和跟踪消息。我通过将过滤器添加到函数的 host.json 文件的日志记录部分来使用我的 Azure 函数完成此操作。是否有类似的方法可以对应用服务项目执行此操作,以便我可以通过门户更改日志级别过滤,而不必重新编译和部署新版本?

我的 Azure 函数的 host.json 如下所示。我在为我的应用服务网站寻找类似的东西:

"logging": {
    "fileLoggingMode": "always",
    "logLevel": {
        "Function": "Warning",
        "Default": "Warning",
        "System": "Information",
        "Microsoft": "Warning",
        "Microsoft.AspNetCore.Mvc.Internal": "Information",
        "Microsoft.AspNetCore.Authentication": "Information"
    }
}

【问题讨论】:

    标签: .net logging azure-web-app-service


    【解决方案1】:

    Azure 监视器提供了一种为 ASP.NET Core 配置 LogLevel 的简单方法。过滤可以在配置中(通常使用appsettings.json 文件)或代码中完成。

    以下示例由官方文档提供:Create filter rules in configuration with appsettings.json

    {
      "Logging": {
        "ApplicationInsights": {
          "LogLevel": {
            "Default": "Warning",
            "Microsoft": "Error"
          }
        },
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    

    更新: 对于 asp .net,我发现 ApplicationInsights.config 可以指定遥测模块级别。下面是关于EventSource events的示例。

        <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
          <Sources>
            <Add Name="MyCompany" Level="Verbose" />
          </Sources>
        </Add> 
    

    【讨论】:

    • 不幸的是,我的项目不使用 .net 核心,它卡在 .net 框架 4.7.1 上,而且你的链接对我不起作用。
    • @Ian Munro,我已经更新了链接和答案。检查这是不是你想要的
    • 我通过添加环境变量并根据此设置手动过滤日志记录来解决我的问题。 EventSource 事件部分很有趣,但我的 hacky 修复让我不必过多地摆弄代码。感谢您的意见。
    猜你喜欢
    • 2012-07-29
    • 2011-05-15
    • 2022-12-09
    • 1970-01-01
    • 2021-10-05
    • 2019-03-04
    • 1970-01-01
    • 2013-02-08
    • 2023-04-06
    相关资源
    最近更新 更多