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

Azure Function信息日志未出现在Logs workspace的原因排查

问题分析与解决方案

一、Information日志未进入Logs Workspace的核心原因:采样规则拦截

你的Application Insights启用了采样功能,Information级别日志属于高频生成的Trace类型日志,大概率被采样逻辑过滤掉了——虽然你排除了Request;Exception类型,但默认采样规则会对Trace日志进行抽样,只有Warning/Error这类低优先级、低频率的日志会被完整保留。

解决方法:调整采样规则

修改host.json中的samplingSettings,可选两种方案:

  1. 把Trace类型加入采样排除列表,确保Information级别的Trace日志不被过滤
"applicationInsights": {
  "samplingSettings": {
    "isEnabled": true,
    "excludedTypes": "Request;Exception;Trace",
    "maxTelemetryItemsPerSecond": 100 // 可根据业务流量调整阈值
  }
}
  1. 测试环境可直接关闭采样(生产环境不建议,会增加数据量成本)
"samplingSettings": {
  "isEnabled": false
}

二、host.json配置不生效的排查与修复

1. 确认配置文件已正确部署

登录Azure门户,进入Function App的高级工具 > Kudu > 站点 > wwwroot,查看host.json的实际内容是否和你本地修改的一致。如果不一致,重新部署配置文件。

2. 检查是否有环境变量覆盖配置

Azure Functions会优先读取环境变量中的日志配置,前往Function App > 配置 > 应用程序设置,检查是否存在以下环境变量:

  • AzureFunctionsJobHost__logging__LogLevel__Default
  • AzureFunctionsJobHost__logging__applicationInsights__LogLevel__Default
    如果存在,删除这些环境变量,让host.json的配置生效。

3. 修正日志类别匹配规则

你配置中指定的Function.Function1等类别如果和实际函数的命名空间/类别名称不匹配,规则不会生效。可以改用更精准的命名空间匹配:

"LogLevel": {
  "Default": "Error",
  "Microsoft": "Error", // 过滤微软组件的冗余日志
  "YourFunctionNamespace.Functions": "Error" // 替换成你实际的函数命名空间
}

4. 重启Function App

修改host.json或环境变量后,必须重启Function App才能让新配置生效,在概览页点击重启按钮即可。

三、额外验证步骤

  1. 在Logs Workspace中执行Kusto查询,确认日志是否被采样:
traces
| where severityLevel == 2 // Information级别对应severityLevel=2
| extend isSampled = tobool(customDimensions['ai.sampling.sampleRate'] != '100')
| project timestamp, message, isSampled

如果isSampled为true,说明日志确实被采样过滤了。

  1. 检查Application Insights的全局采样规则:进入Application Insights资源的配置 > 采样,确认没有自定义采样规则覆盖host.json的设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:00:55