适用场景
为了更加方便使用者调试代码和调整数据格式,我们为各个语言的 SDK 以及 LogAgent 等导入工具,增加了调试模式的选项,主要用于:
- 在开发人员调试代码和数据时使用;
- 以同步、阻塞的方式,向后端发送数据;部分语言由于语言特性,这一机制可能略有不同;
- 实时地展示服务端的校验结果,当校验失败时,不仅仅会展示具体的错误原因,并且会以抛异常等形式(具体实现取决于具体语言),显示地提醒使用者;
- 对于校验成功的数据,在导入辅助工具中,可以实时看到最终入库的的各条数据的各个字段的值与类型。
请注意:Debug 模式是为方便开发者调试而设置的模式,该模式会逐条校验数据并在校验失败时抛出异常,性能远低于正常模式。线上环境使用 Debug 模式会严重影响性能并存在崩溃风险,产品上线前请务必替换掉/关闭 Debug 模式。
后端 SDK 的调试模式
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
,则说明数据只发送过去进行校验,不会真正地写入。
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 基本一致,不再赘述。
Java SDK
在 Java SDK 中使用调试模式,需要初始化一个专门的 DebugConsumer 对象,然后用这个 DebugConsumer 对象来初始化对应的 SensorsAnalytics 对象。DebugConsumer 的构造函数的定义如下:
/**
* DebugConsumer,用于调试模式
*
* @param serverUrl 神策分析采集数据的 URL
* @param writeData 是否把发送的数据真正写入神策分析
*/
public DebugConsumer(final String serverUrl, final boolean writeData)
各个参数的含义与 Python SDK 基本一致,不再赘述。
App SDK 的调试模式
为了防止客户上线时忘记关闭 Debug 模式,Android、iOS SDK 默认为 DebugOff,如果需要开启,可以参考调试模式动态配置。
导入工具的调试模式
LogAgent 和 FormatImporter 的调试模式主要是对数据正确性的校验,详情请参考:
- LogAgent 中的「使用 LogAgent 校验数据」部分
- FormatImporter 中的「公共参数」部分