1. 适用场景

为了更加方便使用者调试代码和调整数据格式,我们为各个语言的 SDK 以及 LogAgent 等导入工具,增加了调试模式的选项,主要用于:

  1. 在开发人员调试代码和数据时使用;
  2. 以同步、阻塞的方式,向后端发送数据;部分语言由于语言特性,这一机制可能略有不同;
  3. 实时地展示服务端的校验结果,当校验失败时,不仅仅会展示具体的错误原因,并且会以抛异常等形式(具体实现取决于具体语言),显示地提醒使用者;
  4. 对于校验成功的数据,在导入辅助工具中,可以实时看到最终入库的的各条数据的各个字段的值与类型。

请注意: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:
        """
PY

各个参数含义在注释上已经写明了。特别需要强调几点:

  1. url_prefix:该参数与其他 Consumer 一样,为神策分析用于数据接收的 URL
  2. 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)
PHP

各个参数的含义与 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)
JAVA

各个参数的含义与 Python SDK 基本一致,不再赘述。

3. App SDK 的调试模式

为了防止客户上线时忘记关闭 Debug 模式,Android、iOS SDK 默认为 DebugOff,如果需要开启,可以参考调试模式动态配置

4. 导入工具的调试模式

LogAgent 和 FormatImporter 的调试模式主要是对数据正确性的校验,详情请参考: