限制从我的App Service发送到appinsight的日志消息

时间:2019-06-17 09:35:48

标签: .net logging azure-web-sites

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

我的Azure函数的host.json看起来像这样。我正在为我的App Service网站寻求类似的服务:

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

1 个答案:

答案 0 :(得分: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>