【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【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.ResultsFunction 的日志,仅记录 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就可以实现过滤不需要的日志。

  1. 通过修改Function.Funciton1为Warning的信息,则过滤掉了waring级别以下的日志(如本文开头提及的information)。
  2. 通过设置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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
人工智能 C++
【Azure Developer】上手 The Best AI Code "Cursor" : 仅仅7次对话,制作个人页面原型,效果让人惊叹!
本文介绍了使用 Cursor 这款 AI 辅助编程工具的步骤与体验。通过下载安装 Cursor 并使用 GitHub 账号登录,你可以创建 HTML 文件并借助 AI 自动生成代码。文章详细描述了如何逐步优化生成的内容,包括调整布局、增加样式及响应式设计等。此外,还展示了通过多次迭代改进后的最终效果,并提供了生成的 HTML 模板代码,便于读者直接使用或进一步修改。
|
1月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
135 3
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
2月前
[Azure Developer]把Azure Function中ILogger对象静态化为静态方法提供日志记录
[Azure Developer]把Azure Function中ILogger对象静态化为静态方法提供日志记录
|
2月前
【Azure Function & Application Insights】在Azure Function的日志中,发现DrainMode mode enabled Traces。它是什么意思呢?
【Azure Function & Application Insights】在Azure Function的日志中,发现DrainMode mode enabled Traces。它是什么意思呢?
|
2月前
|
人工智能 Java Spring
Spring框架下,如何让你的日志管理像‘AI’一样智能,提升开发效率的秘密武器!
【8月更文挑战第31天】日志管理在软件开发中至关重要,不仅能帮助开发者追踪问题和调试程序,还是系统监控和运维的重要工具。在Spring框架下,通过合理配置Logback等日志框架,可大幅提升日志管理效率。本文将介绍如何引入日志框架、配置日志级别、在代码中使用Logger,以及利用ELK等工具进行日志聚合和分析,帮助你构建高效、可靠的日志管理系统,为开发和运维提供支持。
40 0
|
2月前
【Azure Function & Application Insights】调用Function上传和下载文件,有时候遇见大于1MB的文件的日志没有记录在Application Insights中
【Azure Function & Application Insights】调用Function上传和下载文件,有时候遇见大于1MB的文件的日志没有记录在Application Insights中
|
2月前
|
存储 Kubernetes API
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
|
2月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题

热门文章

最新文章