目前我正在开发Azure API管理,因为我在配置了事件中心策略之后导入了一个API,以便将API日志发送到事件中心。到目前为止一切正常。
我使用下面的代码行配置了事件中心策略。
<log-to-eventhub logger-id="azure12113apimdemo-logger">
@(string.Join(",", DateTime.UtcNow, context.Deployment.ServiceName, context.RequestId, context.Request.IpAddress, context.Operation.Name) )
</log-to-eventhub>
事件中心中可用的数据具有以下格式,但我想将具有JSON格式的相同数据发送到事件中心。由于只使用JSON数据,我们可以通过流分析Job发送这些数据power。
活动中心提供的示例数据:
5/5/2017 12:34:36 PM, azureapi12123mdemo.azure-api.net, a81f5391-7532-49b1-8b43-9d8916157qwqw945, 50.71.221.200, CustomerTables_GetCustomerTables
您能否告诉我如何通过在API管理中配置事件中心策略,将API以JSON格式发送到事件中心?
答案 0 :(得分:2)
在最坏的情况下,您可以string.Format
而不是string.Join
手动生成JSON。
但您也应该能够使用JObject
:
@{
var json = new JObject(
new JProperty("DateTime", DateTime.UtcNow),
new JProperty("ServiceName", context.Deployment.ServiceName),
new JProperty("RequestId", context.RequestId),
new JProperty("IP", context.Request.IpAddress),
new JProperty("Operation", context.Operation.Name)
);
return json.ToString();
}