【发布时间】:2022-03-21 16:57:29
【问题描述】:
我正在尝试将 API 请求负载和响应数据记录到 Azure Application Insight。使用跟踪我可以记录。但我想知道将请求和响应数据记录到应用程序洞察力的最佳方式是什么。因为数据量很大,所以 API 调用次数会更多。我不能只使用跟踪来跟踪数十万个请求和响应数据。我尝试了一些博客,例如使用 ITelemetryInitializer/ httpcontext.feature,get,但没有运气。
我想从 c# .Net 框架、Web API 而非 .NET Core 登录。
我尝试过的示例代码。
public class AzureRequestResponseInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
var requestTelemetry = telemetry as RequestTelemetry;
if (requestTelemetry != null && (HttpContext.Current.Request.HttpMethod == HttpMethod.Post.ToString() || HttpContext.Current.Request.HttpMethod == HttpMethod.Get.ToString()))
{
using (var reader = new StreamReader(HttpContext.Current.Request.InputStream))
{
string requestBody = reader.ReadToEnd();
requestTelemetry.Properties.Add("body", requestBody);
}
}
【问题讨论】:
-
你可以参考这个article。如果您有任何更新,请告诉我。
-
请注意,由于要记录大量数据,这可能会导致高成本。您确定要为每个请求记录此信息吗?您不妨使用生成的 id 将正文存储在 azure blob 存储中,并将该 id 存储为自定义属性,以便您可以将遥测与保存请求和响应正文的 blob 相关联
标签: azure-application-insights