• 【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就可以实现过滤不需要的日志。

    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

  • 相关阅读:
    有个名字叫随便乱记——css3
    CSS3伸缩布局
    路政整理
    GIst
    SVN回滚版本
    你需要知道的CSS3 动画技术
    iScroll框架的使用和修改
    CSS3阴影 box-shadow的使用和技巧总结
    Javascript异步编程的4种方法
    zepto学习零碎
  • 原文地址:https://www.cnblogs.com/lulight/p/14218444.html
Copyright © 2020-2023  润新知