反模式:使用 JavaScript 政策将数据记录到第三方服务器
<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
深入阅读
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-09-07。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-09-07\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-09-07。"],[],[]]