在 Azure 函数中使用关联 ID 进行日志记录
Posted
技术标签:
【中文标题】在 Azure 函数中使用关联 ID 进行日志记录【英文标题】:Logging With Correlation Id in Azure Function 【发布时间】:2021-09-23 05:18:32 【问题描述】:任何人都可以建议我如何实现为每个 http 请求的可追溯性添加相关 ID 到下面的函数。
[FunctionName("GetCars")]
public async Task<IActionResult> GetCars([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "api/v1/id/id")] HttpRequest req, Guid id)
try
if (id == Guid.Empty)
_logger.LogError("Id is Empty");
var cars= _deviceService.GetCars(id);
return new OkObjectResult(cars);
catch (Exception ex)
_logger.LogError(ex, "Failed to Fetch Cars");
【问题讨论】:
使用应用洞察力,它会为您做到这一点。 我正在使用它,但我同时点击了这个 api,它们是失败的机会,所以我想在响应正文中返回 id,以便我可以在应用程序洞察力中追踪它 另一种选择是在 Application Insights SDK 上加入调用此 API 的部分。然后,当您打开任何遥测项(请求/依赖项/异常/跟踪)时,Application Insights 将跨所有应用提取整个分布式跟踪。 【参考方案1】:所以,如果我没记错的话,您想要的是,在发生异常的情况下,您可以在正文中返回 *something*,以便您可以在 Application Insights 中找到发生的情况?如果是这样,试试这个:
var requestTelemetry = req.HttpContext.Features.Get<RequestTelemetry>();
var operationId = requestTelemetry.Context.Operation.Id;
并将 operationId 作为结果的一部分发送。
operationId 可用于在 Application Insights 中跟踪从请求到异常的整个操作。
【讨论】:
以上是关于在 Azure 函数中使用关联 ID 进行日志记录的主要内容,如果未能解决你的问题,请参考以下文章
Azure Functions with java - 如何获取写入函数的日志?
具有相同跟踪 ID 的 Stackdriver 日志条目未关联