【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 ...
随机推荐
- 20200221_python虚拟环境在Windows下安装配置_virtualenv不是内部或外部命令也不是可运行的程序或批处理文件
1. 使用管理员启动命令行; 2. 安装虚拟环境 a) .\pip install virtualenv -i https://pypi.douban.com/simple/ b) ...
- day1(初始化项目结构)
1.初始化项目结构 └─shiyanlou_project │ .gitignore │ README.en.md # 英文 │ README.md ...
- PyQt(Python+Qt)学习随笔:QTableWidget项编辑方法editItem、openPersistentEditor
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1.触发编辑项的editItem方法 QTableWidget提供了触发项编辑的方法,调用语法如下: ...
- 第8章 Python类中常用的特殊变量和方法目录
第8章 Python类中常用的特殊变量和方法 第8.1节 Python类的构造方法__init__深入剖析:语法释义 第8.2节 Python类的__init__方法深入剖析:构造方法案例详解 第8. ...
- PHP代码审计分段讲解(7)
17 密码md5比较绕过 <?php if($_POST[user] && $_POST[pass]) { mysql_connect(SAE_MYSQL_HOST_M . ': ...
- 【NOI2018】你的名字(SAM & 线段树合并)
Description Hint Solution 不妨先讨论一下无区间限制的做法. 首先"子串"可以理解为"前缀的后缀",因此我们定义一个 \(\lim(i) ...
- Docker安装rocketmq踩坑指南
Docker 网络 Docker容器运行的时候有host.bridge.none三种网络可供配置. 默认是bridge,即桥接网络,以桥接模式连接到宿主机:host是宿主网络,即与宿主机共用网络:no ...
- Jmeter(2)基础知识
一.Jmeter测试计划 1.测试计划用来描述一个性能/接口测试的脚本和场景设计 独立运行每个线程组:用于控制测试计划中的多个线程组的执行顺序.不勾选时,默认各线程组并行.随机执行. 主线程结束后运行 ...
- MySQL MHA安装配置
1.环境规划 192.168.12.131 node01 192.168.12.132 node02 192.168.12.133 node03 2.环境准备 一主两从GTID,略. 3.配置关键程序 ...
- Mycat安全配置
1. Mycat相关文章 Linux安装Mycat1.6.7.4并实现Mysql数据库读写分离简单配置 Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) Docke ...