无需编写代码实现Azure Function中请求与响应信息的日志记录
Azure Function无编码获取API请求/响应信息方案
方案一:通过Application Insights配置化采集(无需修改业务代码)
你预期用Application Insights实现的思路是可行的,仅需修改Function App的配置项即可完成采集,不需要为每个Function单独编写逻辑:
- 进入目标Function App的Azure管理页,依次打开「配置」→「应用程序设置」,新增/修改以下配置:
- 确认
APPINSIGHTS_INSTRUMENTATIONKEY已配置,值为绑定的Application Insights资源的 instrumentation key - 新增
ApplicationInsights:RequestTracking:IncludeRequestBody,值设为true,开启请求正文采集 - 新增
ApplicationInsights:RequestTracking:IncludeResponseBody,值设为true,开启响应正文采集 - 若需要全量采集无遗漏,新增
APPINSIGHTS_SAMPLING_PERCENTAGE,值设为100,关闭采样过滤 - 若请求/响应正文大于默认的8KB上限,可新增
ApplicationInsights:RequestTracking:MaxRequestBodySizeInKb、ApplicationInsights:RequestTracking:MaxResponseBodySizeInKb,调整到需要的大小(最大支持64KB)
- 确认
- 保存配置后重启Function App,等待10分钟左右即可在Application Insights的
requests表中查询到每一次API调用的请求参数、响应内容、耗时、状态码、关联的Function名称等完整信息。
方案二:通过诊断设置导出日志
如果不需要Application Insights的完整链路追踪能力,也可以用Azure原生的诊断设置实现采集:
- 进入Function App的「诊断设置」页,点击「添加诊断设置」
- 勾选
Requests、FunctionAppLogs、AppServiceHTTPLogs三类日志,按需选择存储到Log Analytics工作区、存储账户或事件中心即可,全程不需要修改业务代码。
内容的提问来源于stack exchange,提问作者Jesper
相关产品推荐
相关产品推荐

