Azure Function App(V4)无法将Info/Trace日志写入App Insights
解决Azure Function V4 App Insights仅记录Warning/Error日志的问题
核心配置修正
你的host.json配置存在层级和规则覆盖问题,Azure Functions V4对日志配置的优先级和命名空间匹配要求严格,直接替换成下面的配置即可:
{ "version": "2.0", "logging": { "LogLevel": { "Default": "Information", "Function": "Information", "Function.你的函数名": "Trace" // 替换成你实际的EventHub触发器函数名,精确到函数才能捕获Trace级日志 }, "ApplicationInsights": { "LogLevel": { "Default": "Information", "Function": "Information" }, "samplingSettings": { "isEnabled": false // 必须关闭采样!默认采样会自动过滤低级别日志,这是最容易踩的坑 } } } }
关键注意事项
- 关闭采样是核心:哪怕你配置了正确的日志级别,默认的采样机制也会过滤掉大部分Info、Trace日志,日处理5000条完全不用担心性能问题,直接关闭即可。
- 精准匹配函数命名空间:不要只写
Function,加上具体函数名能确保日志规则精准命中你的EventHub触发器。 - 代码无需修改:你现有代码里的
Log(LogLevel.Information)和LogInformation等调用都是正确的,不用调整。
验证步骤
- 把修改后的
host.json重新部署到Azure - 手动触发几次函数,等待5-10分钟(App Insights日志存在一定延迟)
- 用KQL查询验证:
traces | where timestamp > ago(10min) | project timestamp, message, severityLevel | order by timestamp desc
此时应该能看到所有级别的日志。
更简便的日志方案
因为你的日处理量很小,日常调试可以直接用Azure Portal里的函数日志流实时查看,或者在函数的「监测」页面直接筛选日志级别,不用每次写KQL。如果只是临时调试,也可以开启函数的「实时指标流」,能更快看到日志输出。
内容的提问来源于stack exchange,提问作者Brn
相关产品推荐
相关产品推荐

