查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
記錄是解決問題的有效方式之一。API 相關資訊 針對各種請求記錄 (例如標頭、表單參數、查詢參數、動態變數等) 供稍後參考這些資訊可在本機訊息處理器 (僅限 Apigee Edge for Private Cloud) 中記錄,或者 至 Sumo Logic、Splunk 或 Loggly 等第三方伺服器進行測試。
反模式
在下方程式碼中,JavaScript 政策中的 httpClient
物件會使用這些資料,將資料記錄到
Sumo Logic 伺服器。這表示系統會在訂閱期間
要求/回應處理作業此方法反而會造成處理能力
進而增加整體延遲時間
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 等
- 訊息記錄政策的最大優點是在訊息中定義。 用戶端流程,會在回應傳回要求用戶端應用程式後執行。
- 在 Post Client 流程中定義這項政策有助於將記錄活動和 進而避免延遲
- 如基於特定需求,或有需要透過 JavaScript 記錄 (而非「文章」) 的理由
上述用戶端流程選項),則必須以非同步方式完成。也就是
如果您使用
httpClient
物件,就必須確保 JavaScript 不導入waitForComplete