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

How send API logs in the JSON format to event hub by configuring the event hub policy in 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 数据,我们可以通过流分析作业发送这些数据 power bi。

事件中心中可用的示例数据:

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 格式发送到事件中心吗?

在最坏的情况下,您可以 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();
}