【Azure APIM】如何把APIM中处理的请求的所有请求头保存在日志中? - LuBu0505/My-Code GitHub Wiki

问题描述

Azure API Management 诊断日志开启后,它的默认日志中,并没有记录APIM请求的 Header 和 Body 信息。 image.png

那么,还有什么简单的方法来记录所有请求的 Header 或 Body 信息呢?

问题解答

可以的,使用 Trace 策略,然后调用 context.Request.Headers 来获取请求头,context.Request.Body 来获取Body信息。

如,下面的示例是获取全部Headers,并保存为JSON格式:

<trace source="custom-policy" severity="information">
<message>@(Newtonsoft.Json.JsonConvert.SerializeObject(context.Request.Headers.ToDictionary(h => h.Key, h => h.Value.ToArray())))</message>
</trace>

记录后的效果截图: image.png

或者是转化为字符串格式:

<trace source="custom-policy" severity="information">
    <message>@("{" + string.Join(",\n", context.Request.Headers.Select(h => h.Key + ":" + h.Value.FirstOrDefault())) + "}")</message>
</trace>

参考资料

Set Body Policy: https://learn.microsoft.com/en-us/azure/api-management/set-body-policy

Trace Policy: https://learn.microsoft.com/en-us/azure/api-management/trace-policy

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

⚠️ **GitHub.com Fallback** ⚠️