除錯模式
1. 適用場景
為了更加方便使用者除錯程式碼和調整數據格式,我們為各個語言的 SDK 以及 LogAgent、BatchImporter 等匯入工具,增加了除錯模式的選項,主要用於:
- 在開發人員除錯程式碼和數據時使用;
- 以同步、阻塞的方式,向後端發送數據;部分語言由於語言特性,這一機制可能略有不同;
- 即時地展示伺服器端的校驗結果,當校驗失敗時,不僅僅會展示具體的錯誤原因,並且會以拋出異常等形式(具體實現取決於具體語言),顯示地提醒使用者;
- 對於校驗成功的數據,在匯入輔助工具中,可以即時看到最終入庫的的各條數據的各個欄位的值與型別。
請注意:Debug 模式是為方便開發者除錯而設定的模式,該模式會逐條校驗數據並在校驗失敗時拋出異常,性能遠低於正常模式。線上環境使用 Debug 模式會嚴重影響性能並存在崩潰風險,產品上線前請務必替換掉/關閉 Debug 模式。
2. 後端 SDK 的除錯模式
2.1. Python SDK
在 Python SDK 中,使用除錯模式,需要初始化一個專門的 DebugConsumer 物件,然後用這個 DebugConsumer 物件來初始化對應的 SensorsAnalytics 物件。
DebugConsumer 的建構函數的定義如下:
def __init__(self, url_prefix, write_data=True, request_timeout=None):
"""
初始化Consumer
:param url_prefix: 神策分析用於數據接收的 URL
:param write_data: 發送過去的數據是真正寫入,還是僅僅進行檢查
:param request_timeout:請求的超時時間,單位毫秒
:return:
"""
各個參數含義在註釋上已經寫明了。特別需要強調幾點:
- url_prefix:該參數與其他 Consumer 一樣,為神策分析用於數據接收的 URL
- write_data:這個參數預設為
True
,也即發送過去的數據會真正地寫入後端;如果這個參數設定為False
,則說明數據只發送過去進行校驗,不會真正地寫入。
2.2. PHP SDK
PHP SDK 的除錯模式的使用方式和 Python SDK 類似,也是建構一個 DebugConsumer 的物件,然後用它來初始化 SensorsAnalytics 物件。
DebugConsumer 的建構函數如下:
/**
* DebugConsumer constructor,用於除錯模式.
* 具體說明可以參照: http://www.sensorsdata.cn/manual/debug_mode.html
*
* @param string $url_prefix 神策分析用於數據接收的 URL
* @param bool $write_data 是否把發送的數據真正寫入
* @param int $request_timeout 請求伺服器的超時時間,單位毫秒.
* @throws SensorsAnalyticsDebugException
*/
public function __construct($url_prefix, $write_data = True, $request_timeout = 1000)
各個參數的含義與 Python SDK 基本一致,不再贅述。
2.3. Java SDK
在 Java SDK 中使用除錯模式,需要初始化一個專門的 DebugConsumer 物件,然後用這個 DebugConsumer 物件來初始化對應的 SensorsAnalytics 物件。DebugConsumer 的建構函數的定義如下:
/**
* DebugConsumer,用於除錯模式
*
* @param serverUrl 神策分析採集數據的 URL
* @param writeData 是否把發送的數據真正寫入神策分析
*/
public DebugConsumer(final String serverUrl, final boolean writeData)
各個參數的含義與 Python SDK 基本一致,不再贅述。
3. App SDK的除錯模式
為了防止客戶上線時忘記關閉 Debug 模式,Android、iOS SDK 預設為 DebugOff,如果需要開啟,可以參考除錯模式動態設定。
4. 匯入工具的除錯模式
LogAgent 和 BatchImporter 的除錯模式主要是對數據正確性的校驗,詳情請參考:
- BatchImporter 中 4.2.校驗數據模式
- LogAgent 中 5.使用 LogAgent 校驗數據
- FormatImporter 中 4.2.公共參數