日誌與除錯

天笑發表於2017-03-21

日誌與除錯

輸出日誌可以用logit函式,將資訊輸出到後端檔案中,預設存在服務目錄下的trace.log檔案中。

logit("### debug info");

除直接檢視檔案外,也可以在瀏覽器中訪問 tool/log.php 頁面來檢視最近的日誌。

如果想輸出到其它檔案,可以在第二個引數中指定,如:

logit("### debug info", "mydebug");

這樣除錯資訊則輸出到mydebug.log檔案中。

除錯時也常常輸出日誌到返回資料中,以便前端直接檢視,可以用addLog函式,它將除錯資訊追加到JSON格式的返回值後面,這樣可相容筋斗雲的返回格式:

addLog("### debug info"); // 除錯等級0,只要是測試模式下,總是輸出
addLog("### debug info level 1", 1); // 在測試模式下且除錯等級>=1時輸出。

注意必須在conf.user.php中啟用測試模式才能看到日誌返回:

putenv("P_TEST_MODE",  1);

測試模式下,輸出的JSON串經過美化更易讀。 呼叫介面時新增URL引數_debug可以設定除錯等級,如http://.../api.php/Ordr.add?_debug=1

[模擬模式]

系統中整合了第三方的簡訊傳送功能,如何在日常測試時不用真發簡訊而走通流程,以及如果進行自動化測試?

筋斗雲建議,對第三方系統依賴(如微信認證、支付寶支付、傳送簡訊等),應設計模擬介面來模擬。 如果在conf.user.php中配置:

putenv("P_TEST_MODE", 1);
putenv("P_MOCK_MODE", 1);

則啟用了模擬模式,注意模擬模式只在測試模式下才生效,這時會走模擬介面。

傳送簡訊後,實際會輸出資訊到ext日誌中,測試時可檢視日誌ext.log獲取,或線上訪問tool/log.php檢視ext日誌。

[API呼叫監控]

筋斗雲預設將介面呼叫記錄到表ApiLog中供分析。

一旦出問題可以根據這張表來追溯原因。也可以用它來作使用者訪問統計等。其中有很多有用的欄位:

  • tm: 呼叫時間。
  • addr: 呼叫者IP地址。
  • ua: 瀏覽器的UserAgent值,可區分裝置型別。
  • app: 前端應用標識。每個前端H5應用在呼叫介面時,通過URL引數_app來指定應用的名稱。
  • ses: 會話標識(session id)。
  • userId: 操作者編號,可能是使用者編號,員工編號等。
  • ac: 呼叫名稱。
  • t: 呼叫時長(毫秒)。
  • retval: 呼叫返回碼。
  • req/res: 請求內容與響應內容,記錄最多1K位元組。
  • reqsz/ressz: 請求與響應的長度。
  • ver 前端應用版本。呼叫介面時通過URL引數_ver來指定應用版本名。

相關文章