如何通过在API管理中配置事件中心策略,将API以JSON格式发送到事件中心?

时间:2017-05-10 16:28:38

标签: json policy azure-eventhub azure-api-management

目前我正在开发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格式发送到事件中心?

1 个答案:

答案 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();
}