【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
问题描述
基于.NET Core的Function App如果配置了Application Insights之后,每有一个函数被执行,则在Application Insights中的Logs中的trace里都可以查询到函数的执行启动,执行结束的信息。类似如下的日志,
| 函数执行开始 | Executing Function1(Reason=This function was programmatically called via the host APIs., Id=fa9er0b5c612447ert2051af5543etyb) |
| 函数执行结束 | Executed Function1(Succeeded, Id=fa9er0b5c612447ert2051af5543etyb, Duration=1ms) |
由于这类日志产生的条目过多且没有包含业务日志,所以在不影响其他业务或异常日志的情况下,是否可以不收集此类信息呢?
问题原因
Application Insights收集日志信息是根据在Azure Function中的host.json配置而决定的。如以下内容:
{
"logging": {
"fileLoggingMode": "always",
"logLevel": {
"default": "Information",
"Host.Results": "Error",
"Function": "Error",
"Host.Aggregator": "Trace"
}
}
}
- 对于
Host.Results或Function的日志,仅记录Error或更高级别的事件。 - 对于
Host.Aggregator的日志,记录所有生成的指标 (Trace)。 - 对于所有其他日志(包括用户日志),仅记录
Information级别及更高级别的事件。
而对于日志级别的分类,则可以参考下表:
为每个日志分配日志级别。 该值是表示相对重要性的整数:
| LogLevel | 代码 | 说明 |
|---|---|---|
| 跟踪(Trace) | 0 | 包含最详细消息的日志。 这些消息可能包含敏感应用程序数据。 这些消息默认情况下处于禁用状态,并且绝不应在生产环境中启用。 |
| 调试(Debug) | 1 | 在开发过程中用于交互式调查的日志。 这些日志应主要包含对调试有用的信息,并且没有长期价值。 |
| 信息(Information) | 2 | 跟踪应用程序的常规流的日志。 这些日志应具有长期价值。 |
| 警告(Warning) | 3 | 突出显示应用程序流中的异常或意外事件,但不会导致应用程序执行停止的日志。 |
| 错误(Error) | 4 | 当前执行流因失败而停止时突出显示的日志。 这些错误应指示当前活动中的故障,而不是应用程序范围内的故障。 |
| 严重(Critical) | 5 | 描述不可恢复的应用程序/系统崩溃或需要立即引起注意的灾难性故障的日志。 |
| 无(None) | 6 | 禁用指定类别的日志记录。 |
所以根据以上的基础信息,在Application Insights的Trace表中,我们查看到函数执行日志的Category和LogLevel,这样就可以针对性的设置收集日志的参数。

由此我们可以得出: Executing和Executed两个记录在function层面对应的category和log level分别是Function.Function1 与Information
解决方式
根据以上的分析,只要在host.json中限制Loglevel和Category就可以实现过滤不需要的日志。
- 通过修改Function.Funciton1为Warning的信息,则过滤掉了waring级别以下的日志(如本文开头提及的information)。
- 通过设置Function.Function1.User为Information信息,则可以保证通过代码记录的inforamtion级别及以上的日志可以发送到Application Insights。

查询Application Insights中生成的日志记录,可以看到是没有Function.Function1的information的日志的

附上在Application Insights的Traces表中查询到以上记录的语句
traces
| where timestamp > ago(30m)
| extend category = customDimensions.Category
| extend logLevel = customDimensions.LogLevel
| project timestamp, category, logLevel, message
| order by timestamp desc
参考资料
如何为 Azure Functions 配置监视: https://docs.azure.cn/zh-cn/azure-functions/configure-monitoring?tabs=v2
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中的更多相关文章
- Ubuntu中启用关闭Network-manager网络设置问题!
Ubuntu中启用关闭Network-manager网络设置问题! [Server版本] 在UbuntuServer版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改/etc/net ...
- 【已解决】Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8
[问题] 折腾: [已解决]Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8 过程中,增大对应AVD的内存为2G后,结果无法启 ...
- lintcode: 中序遍历和后序遍历树构造二叉树
题目 中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: 2 / \ 1 3 注意 你可 ...
- Tree Traversals Again(根据前序,中序,确定后序顺序)
题目的大意是:进行一系列的操作push,pop.来确定后序遍历的顺序 An inorder binary tree traversal can be implemented in a non-recu ...
- MySQL中truncate误操作后的数据恢复案例
MySQL中truncate误操作后的数据恢复案例 这篇文章主要介绍了MySQL中truncate误操作后的数据恢复案例,主要是要从日志中定位到truncate操作的地方然后备份之前丢失的数据,需要的 ...
- 使用Azure Functions 在web 应用中启用自动更新(一)分析基于轮询的 Web 应用的限制
1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...
- 【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题
问题描述 使用 Azure 虚拟网络,Azure APIM 可以管理无法通过 Internet 访问的 API,达到以保护企业内部的后端API的目的.在虚拟网络中,启用网络安全组(NSG:Networ ...
- 使用 Azure Active Directory 管理 Azure 中的 HPC Pack 群集
Microsoft HPC Pack 2016 支持在 Azure 中部署 HPC Pack 群集的管理员将其与 Azure Active Directory (Azure AD) 集成. 请按照本文 ...
- [Windows Azure] Adding Sign-On to Your Web Application Using Windows Azure AD
Adding Sign-On to Your Web Application Using Windows Azure AD 14 out of 19 rated this helpful - Rate ...
随机推荐
- 初学者刚学c++在定义类时只有成员变量易犯的错误
------------------------ #include<iostream> using namespace std;//c++的命名空间 class circle { publ ...
- 第9.2节 Python的文件打开函数open详解
一. 引言 在操作一个文件前,大部分情况需要先打开文件,才能进行,在Python中使用内置函数open来打开一个文件.open函数是Python的一个内置函数,io模块 定义的函数open是该内置函数 ...
- 第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反
一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视 ...
- Typescript + React 高仿 Antd 从零到一打造自己的组件库(完整)
买了张轩老师的课程,感觉很不错,适用于高级进阶,老师讲的通俗易懂,欢迎讨论学习.WX:Jujiu_i
- 大数据技术体系 && NoSQL数据库的基本原理
1.NoSQL产生的原因 目前关系型数据库难以应对日益增多的海量数据,横向的分布式扩展能力比较弱,因此构建出非关系型数据库(所谓的NoSQL),其目的是为了构建一种结构简单.分布式.易扩展.效率高且使 ...
- Linux下netstat命令简单操作
netstat -t :TCP协议 -u :UDP协议 -l :监听 -r :路由 -n :显示IP地址和端口号 常用: netstat -tlun 查看本机监听的端口 netstat -an 查看本 ...
- 自动化测试架构设计 &&自动化持续集成测试任务实战[线性测试、模块驱动测试、数据驱动测试、关键字驱动测试]
1 为什么设计自动化测试架构 1.1 企业现状分析 压力大:产品需求不明确,上线时间确定,压力山大. 混乱:未立项,开发时间已过半,前期无控制,后期无保障. 疲于应付:开发人员交付的文件质量差,测试跟 ...
- neo4j数据库数据转移,从阿里云转移到windows服务器
1.从阿里云迁移neo4j时需停掉neo4j数据库,在neo4j的bin目录下输入 ./neo4j stop 2.将数据备份到一个文件中 ./neo4j-admin dump --database=g ...
- 冲刺Day4
每天举行站立式会议照片: 昨天已完成的工作: 1.登录注册前端与后端的交互 2.订单模块的部分代码 3.用户模块的部分代码 今天计划完成的工作: 成员 任务 高嘉淳 继续完善用户模块的功能 覃泽泰 继 ...
- 【Alpha冲刺阶段】Scrum Meeting Daily5
[Alpha冲刺阶段]Scrum Meeting Daily5 1.会议简述 会议开展时间 2020/5/27 8:30-9:00 PM 会议基本内容摘要 大家讲述了自己的任务完成情况以及遇到的问题 ...