.net - 限制从我的应用服务发送到 appinsight 的日志消息
问题描述
我的应用服务正在使用 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"
}
}
解决方案
Azure 监视器提供了一种为 ASP.NET Core 配置 LogLevel 的简单方法。过滤可以在配置中(通常使用appsettings.json
文件)或代码中完成。
以下示例由官方文档提供:使用 appsettings.json 在配置中创建过滤规则。
{
"Logging": {
"ApplicationInsights": {
"LogLevel": {
"Default": "Warning",
"Microsoft": "Error"
}
},
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
更新:对于 asp .net,我发现ApplicationInsights.config可以指定遥测模块级别。以下是有关EventSource 事件的示例。
<Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
<Sources>
<Add Name="MyCompany" Level="Verbose" />
</Sources>
</Add>
推荐阅读
- angular - ngx-datatable:mat-icon 按钮而不是切换按钮的锚点
- android - 场景在 Unity 中加载但无法加载场景 Android
- javascript - 如何连接在线服务(特别是 Squarespace 和 Shipstation)以在其提供的 API 之外同步订单详细信息
- c# - C# 标准库 3D int 向量
- javascript - 使用嵌套函数查找第二大数。查找最大数的函数是覆盖原始数组
- haskell - 如何理解和修复“无法匹配类型”错误?
- javascript - 在不使用扩展运算符的情况下正确更新 React.js 状态中的对象
- excel - 查找重复项并将它们减少为数组中的唯一行
- javascript - 更改滚动上的徽标
- android - 将 FacebookSDK 导入 Unity Android 项目会导致构建崩溃