<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
日志记录是调试问题的高效方法之一。有关 API 的信息 所有请求(例如标头、表单参数、查询参数、动态变量等)都可以被记录为 稍后参考。这些信息可以记录在消息处理器本地(仅适用于私有云的 Apigee Edge)或 Sumo Logic、Splunk 或 Loggly 等第三方服务器。
反模式
在以下代码中,JavaScript 政策中的 httpClient
对象用于将数据记录到
Sumo 逻辑服务器。这意味着,日志记录过程实际上发生在
请求/响应处理。这种方法会适得其反,因为这会增加处理
从而增加整体延迟时间。
LogData_JS:
<!-- /antipatterns/examples/1-4.xml --> <Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS"> <DisplayName>LogData_JS</DisplayName> <ResourceURL>jsc://LogData.js</ResourceURL> </Javascript>
LogData.js:
<!-- /antipatterns/examples/1-5.xml --> var sumoLogicURL = "..."; httpClient.send(sumoLogicURL); waitForComplete();
这里的罪魁祸首是调用 waitForComplete()
,这会挂起调用方的
操作,直到记录过程完成为止。有效的模式是将此设为异步
消除此调用。
影响
- 通过 JavaScript 政策执行日志记录代码会增加 API 的延迟时间 请求。
- 并发请求可能会给消息处理器上的资源带来压力, 对其他请求的处理产生不利影响。
最佳做法
- 使用 MessageLogging 政策将数据传输/记录到日志服务器或第三方日志 管理服务,例如 Sumo Logic、Splunk、Loggly 等
- Message Logging 政策的最大优势在于,它可以在 客户端流,在响应发送回请求的客户端应用后执行。
- 在 Post Client 流程中定义此政策有助于将日志记录活动和 从而避免延迟
- 如果存在特定要求或有理由通过 JavaScript(而不是
客户端流程选项),则需要异步执行。也就是说,
如果您使用的是
httpClient
对象,则需要确保 JavaScript 未实现waitForComplete