You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure门户查找Python函数logging库生成的自定义日志

Azure Python Functions 自定义Info日志在Application Insights不可见的排查方案

你能看到系统默认的Warning/Error日志、看不到自定义Info日志,90%以上的情况是日志过滤规则、配置、查询方式的问题,和已配置的两个Application Insights连接参数无关,按以下步骤逐一排查即可:

1. 修正host.json日志级别配置(最高发问题)

Azure Functions运行时默认对用户代码输出的日志设置了Warning级别的过滤阈值,你写的logging.info()属于Information级别,默认会被直接丢弃,根本不会上报到Application Insights。
你需要在函数项目的host.json文件中,显式把用户函数的日志级别调整为Information,参考配置如下:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    },
    "logLevel": {
      "default": "Warning",
      "Function": "Information",
      "Host.Results": "Error",
      "Host.Aggregator": "Trace"
    }
  }
}

配置说明:

  • Function节点对应所有用户函数代码输出的日志,必须设置为Information,Info级别的自定义日志才会被放行
  • 不要把default级别设成Information,会导致大量系统底层无意义日志上报,增加不必要的成本

2. 检查代码日志写法,避免覆盖默认日志管道

不要做以下两种会破坏Azure默认日志配置的操作:

  • 不要在代码中调用logging.basicConfig()自行配置日志,这个操作会覆盖Azure Functions预注入的Application Insights日志handler,导致日志无法上报
  • 不要给自行创建的命名logger单独设置高于Info的过滤级别,如果你用logging.getLogger(__name__)创建独立logger,不要额外调用logger.setLevel(logging.WARNING)这类配置
    最稳妥的写法是直接使用根logger输出日志:
import logging
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
    # 直接输出info级自定义日志
    logging.info("自定义日志:函数开始处理请求,请求ID:%s", req.func_context.invocation_id)
    # 业务逻辑代码
    return func.HttpResponse("OK")

3. 用正确的方式在Application Insights中检索日志

不要只依赖Transaction search的默认筛选条件,默认筛选经常漏掉Info级别的Trace日志:

  • 方式一:进入Application Insights的日志板块,用KQL语句直接查询traces表,自定义日志全部存在这张表中,参考查询语句:
traces
| where timestamp > ago(1h) // 调整为你需要的时间范围
| where customDimensions.Category startswith "Function." // 筛选用户函数输出的日志
| project timestamp, message, customDimensions.FunctionName, severityLevel
| order by timestamp desc
  • 方式二:如果用Transaction search,需要手动调整筛选条件:
    • 事件类型勾选Trace(默认很多场景下不勾选这个类型)
    • 事件级别勾选Information
    • 把时间范围调整到函数触发的对应时间段

4. 其他边缘场景排查

  • 配置修改后必须重启函数应用,host.json的配置不会热生效,重启后等待1-2分钟(Application Insights日志入库有10秒到3分钟不等的延迟)再触发函数测试
  • 高负载场景下默认开启的采样功能会丢弃部分Info级日志,测试环境排查时可以临时把host.json中samplingSettings.isEnabled设为false验证,生产环境建议调整采样比例而非直接关闭
  • 如果你使用的是旧版本Linux消费计划Python函数,将应用设置FUNCTIONS_EXTENSION_VERSION设为~4,升级到V4运行时可修复旧版本worker存在的Info日志丢失bug

内容的提问来源于stack exchange,提问作者sergioMoreno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:01:40