SDK配置参考

ARMS用户体验监控提供一系列SDK配置项,让您能够通过设置参数来满足额外需求。本文介绍PC应用常用的SDK配置。

启动配置

(必须)设置Config地址

每个应用都需要关联对应的Config地址,该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_config_address(alibabacloud_rum_options_t *options, const char *config_address);

参数

说明

参数限制

失败结果

options

alibabacloud_rum_options_t

非空,通过 alibabacloud_rum_options_new() 函数创建。

接口调用失败,SDK停止。

config_address

const char*

非空,由用户体验监控平台生成。

接口调用失败,SDK停止。

示例:

alibabacloud_rum_options_set_config_address(options, RUM_CONFIG_ADDRESS);

(必须)设置应用ID

每个应用都需要关联对应的AppId,该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_app_id(alibabacloud_rum_options_t *options, const char *app_id)

参数

说明

参数限制

失败结果

app_id

应用AppID

由用户体验监控平台生成的应用唯一ID。

接口调用失败,SDK停止。

示例:

alibabacloud_rum_options_set_app_id(options, RUM_CONFIG_APPID);

(必须)设置应用名称

设置应用名称。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_app_name(alibabacloud_rum_options_t *options, const char *app_name)

参数

说明

参数限制

失败结果

app_name

const char*, 应用名称。

非空,字符串长度大于0且小于128。

接口调用失败,应用名称设置不会生效。

示例:

alibabacloud_rum_options_set_app_name(options, "WindowsDemo");

(必须)设置应用版本号

设置应用的版本号信息。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_app_version(alibabacloud_rum_options_t *options, const char *app_version)

参数

说明

参数限制

失败结果

app_version

const char*

非空,字符串长度大于0且小于64。

接口调用失败,应用版本号设置不会生效。

示例:

alibabacloud_rum_options_set_app_version(options, "0.1.0-beta.2");

(可选)设置应用环境

设置应用的环境,包含:local、daily、pre、gray、prod。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_env(alibabacloud_rum_options_t *options, alibabacloud_rum_env_t env)

参数

说明

参数限制

失败结果

env

应用环境

在以下枚举值中指定:

  • ALIBABACLOUD_RUM_ENV_PROD

  • ALIBABACLOUD_RUM_ENV_GRAY

  • ALIBABACLOUD_RUM_ENV_PRE

  • ALIBABACLOUD_RUM_ENV_DAILY

  • ALIBABACLOUD_RUM_ENV_LOCAL

接口调用失败,应用环境设置不会生效。

示例:

alibabacloud_rum_options_set_env(options, ALIBABACLOUD_RUM_ENV_LOCAL);

(可选)设置设备ID

SDK会默认生成设备ID,缓存在本地文件中,您也可以自定义设备ID。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_utdid(alibabacloud_rum_options_t *options, const char *utdid)

参数

说明

参数限制

失败结果

utdid

const char*,设备ID。

非空,字符串长度大于0且小于37。

接口调用失败,设备ID设置不会生效。

示例:

alibabacloud_rum_options_set_utdid(options, "b7028408-ddac-4a58-72a9-653f6637f0e6");

(可选)设置日志等级

SDK在运行时会输出一定的日志。在使用SDK遇到问题时,通过调整SDK日志等级可以输出更丰富的信息,用于排查定位。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_debug_level(alibabacloud_rum_options_t *options, alibabacloud_rum_level_t level);

参数

说明

参数限制

失败结果

level

日志等级。

在以下枚举值中指定:

  • ALIBABACLOUD_RUM_LEVEL_FATAL

  • ALIBABACLOUD_RUM_LEVEL_ERROR

  • ALIBABACLOUD_RUM_LEVEL_WARNING

  • ALIBABACLOUD_RUM_LEVEL_INFO

  • ALIBABACLOUD_RUM_LEVEL_DEBUG

  • ALIBABACLOUD_RUM_LEVEL_TRACE

  • ALIBABACLOUD_RUM_LEVEL_ALL

其中,ALIBABACLOUD_RUM_LEVEL_ALL 的日志等级最高,此时日志会写入到缓存文件中。

接口调用失败,日志等级设置不会生效。

示例:

alibabacloud_rum_options_set_debug_level(options, ALIBABACLOUD_RUM_LEVEL_DEBUG);

(可选)设置缓存目录

SDK运行时会产生缓存文件,可以根据需要指定缓存目录。SDK默认会在可执行文件所在目录创建名为 .alibabacloud-rum 的文件夹。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_cache_path(alibabacloud_rum_options_t *options, const char *path)

参数

说明

参数限制

失败结果

path

const char *

非空。文件目录的长度可能会受系统限制。

接口调用失败,缓存目录设置不会生效。

示例:

alibabacloud_rum_options_set_cache_path(options, "/path/to/your/cache/");

(可选)设置网络请求采集过滤器

SDK支持采集libcurl、CEF框架的网络请求数据。您可以通过配置网络请求采集过滤器来决定指定URL的采集行为。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_network_options(alibabacloud_rum_options_t *options, alibabacloud_rum_network_options_t *network_options)

参数

说明

参数限制

失败结果

network_options

网络请求过滤器结构体。

非空,且需要满足以下结构体的定义:

typedef struct alibabacloud_rum_network_options_s
{
    int (ALIBABACLOUD_RUM_CALLBACK *should_record_request)(const char *url);
    int (ALIBABACLOUD_RUM_CALLBACK *should_tracing)(const char *url);
} alibabacloud_rum_network_options_t;

接口调用失败,网络请求采集过滤器设置不会生效。

示例:

// 过滤指定URL是否允许采集。
// 该函数返回 0 时,表示不采集;返回非 0 时,表示采集。
int ALIBABACLOUD_RUM_CALLBACK example_should_record_request(const char *url)
{
    LOG("example", "example_should_record_request, url: %s", url);
    return 1;
}

// 过滤指定URL是否允许端到端打通。
// 该函数返回 0 时,表示允许;返回非 0 时,表示不允许。
int ALIBABACLOUD_RUM_CALLBACK example_should_tracing(const char *url)
{
    LOG("example", "example_should_tracing, url: %s", url);
    return NULL != strstr(url, "/api/data");
}

// 注意:SDK会默认配置network_options。默认情况下,会采集所有URL请求数据,且所有URL不允许端到端打通。
alibabacloud_rum_network_options_t *network_options = alibabacloud_rum_network_options_new();
network_options->should_tracing = example_should_tracing;
network_options->should_record_request = example_should_record_request;
alibabacloud_rum_options_set_network_options(options, network_options);

(可选)开启/关闭libcurl网络数据采集模块

SDK支持配置是否开启libcurl网络数据采集模块。默认开启libcurl网络数据采集模块。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_auto_curl_tracking(alibabacloud_rum_options_t *options, int enabled)

参数

说明

参数限制

失败结果

enabled

int

  • 0:关闭

  • 1:开启

接口调用失败,libcurl网络数据采集模块设置不会生效。

示例:

// 开启libcurl网络数据采集模块
alibabacloud_rum_options_set_auto_curl_tracking(options, 1);
重要

开启libcurl网络数据采集模块之前,您需要先集成libcurl库。当前仅支持libcurl动态库数据的采集。

(可选)开启/关闭崩溃采集模块

SDK支持配置是否开启崩溃数据采集模块。默认开启崩溃数据采集模块。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_auto_crash_tracking(alibabacloud_rum_options_t *options, int enabled)

参数

说明

参数限制

失败结果

enabled

int

  • 0:关闭

  • 1:开启

接口调用失败,崩溃数据采集模块设置不会生效。

示例:

// 开启崩溃数据采集模块。
alibabacloud_rum_options_set_auto_crash_tracking(options, 1);

(可选)开启/关闭CEF框架数据采集模块

SDK支持配置是否开启CEF框架数据采集模块。默认关闭CEF框架数据采集模块。该接口需要在调用alibabacloud_rum_init函数前设置。

void alibabacloud_rum_options_set_auto_cef_tracking(alibabacloud_rum_options_t *options, int enabled)

参数

说明

参数限制

失败结果

enabled

int

  • 0:关闭

  • 1:开启

接口调用失败,CEF框架数据采集模块设置不会生效。

示例:

// 开启CEF框架数据采集模块
alibabacloud_rum_options_set_auto_cef_tracking(options, 1);
重要

开启CEF框架数据采集模块之前,您需要先集成CEF库。当前仅支持CEF动态库数据的采集。

(必须)启动SDK

通过 alibabacloud_rum_init 函数可以完成SDK的初始化。

int alibabacloud_rum_init(alibabacloud_rum_options_t *options)

参数

说明

参数限制

失败结果

options

SDK配置项

非空,且必要参数都已设置。

接口调用失败,SDK停止。

(必须)关闭SDK

通过 alibabacloud_rum_close 函数可以关闭SDK。

int alibabacloud_rum_close()

示例:

alibabacloud_rum_close()

自定义信息

设置用户名称

SDK支持设置与用户相关的信息,从而完成数据分析与实际用户相关联的需求场景。该接口需要在调用alibabacloud_rum_init函数之后设置。

void alibabacloud_rum_set_username(const char *username)

参数

说明

参数限制

失败结果

username

const char *

字符串非空,需要小于等于256。

接口调用失败,当次设置无效。

示例:

alibabacloud_rum_set_username("my nick name is xxxx");

设置用户ID

SDK支持设置与用户相关的信息,从而完成数据分析与实际用户相关联的需求场景。该接口需要在调用alibabacloud_rum_init函数之后设置。

void alibabacloud_rum_set_userid(const char *userid)

参数

说明

参数限制

失败结果

userid

const char *

字符串非空,需要小于等于256。

接口调用失败,当次设置无效。

示例:

alibabacloud_rum_set_userid("1234567890");

设置用户扩展信息

SDK支持设置与用户相关的信息,从而完成数据分析与实际用户相关联的需求场景。

void alibabacloud_rum_set_user_tags(const char *user_tags)

参数

说明

参数限制

失败结果

user_tags

const char*

字符串非空,需要小于等于512。

接口调用失败,当次设置无效

设置全局属性

SDK支持自定义全局业务属性。自定义全局属性后,新产生的数据会自动携带该业务属性信息,从而完成数据分析与业务属性相关联的需求场景。alibabacloud_rum_set_properties函数调用后,会覆盖上一次的值。

#define alibabacloud_rum_set_properties(...)

参数

说明

参数限制

失败结果

(...)

属性键值对

键值对的最大数量为50,key的最大长度为52,所有键值对对应的字符串最大长度为2000。

接口调用失败,当次设置无效。

示例:

alibabacloud_rum_set_properties("shop_id", "gz_xihu_001", "shop_name", "西湖总店");

上报自定义异常

调用自定义异常接口,并传入相应的参数,可完成自定义异常数据的统计功能。C/C++ SDK提供了一组函数用来完成自定义异常的上报。

alibabacloud_rum_custom_exception_t* alibabacloud_rum_custom_exception_new(const char *name, const char *message);
void alibabacloud_rum_custom_exception_set_file(alibabacloud_rum_custom_exception_t *event, const char *file);
void alibabacloud_rum_custom_exception_set_source(alibabacloud_rum_custom_exception_t *event, const char *source);
void alibabacloud_rum_custom_exception_set_caused_by(alibabacloud_rum_custom_exception_t *event, const char *caused_by);
void alibabacloud_rum_custom_exception_set_stack(alibabacloud_rum_custom_exception_t *event, const char *stack);
void alibabacloud_rum_custom_exception_free(alibabacloud_rum_custom_exception_t *event);
void alibabacloud_rum_custom_exception_report(alibabacloud_rum_custom_exception_t *event);

函数名称

说明

alibabacloud_rum_custom_exception_new

创建 alibabacloud_rum_custom_exception_t 实例。

alibabacloud_rum_custom_exception_set_file

设置异常关联源文件。

alibabacloud_rum_custom_exception_set_source

设置异常来源,保留字段。

alibabacloud_rum_custom_exception_set_caused_by

设置异常原因。

alibabacloud_rum_custom_exception_set_stack

设置异常堆栈。

alibabacloud_rum_custom_exception_free

释放 alibabacloud_rum_custom_exception_t 实例,一般无需调用。

alibabacloud_rum_custom_exception_report

上报自定义异常。

示例:

alibabacloud_rum_custom_exception_t *custom_exception = alibabacloud_rum_custom_exception_new("exception", "NullPointerException");
alibabacloud_rum_custom_exception_set_file(custom_exception, "/example/main.c");
alibabacloud_rum_custom_exception_set_caused_by(custom_exception, "NullPointerException");
alibabacloud_rum_custom_exception_set_stack(custom_exception, "Exception in thread 'main' java.util.NullPointerException");
alibabacloud_rum_custom_exception_report(custom_exception);

上报自定义事件

SDK支持上报自定义事件。调用相应的接口,并传入相应的参数,可完成自定义事件数据的统计功能。C/C++ SDK提供了一组函数用来完成自定义事件的上报。

alibabacloud_rum_custom_event_t* alibabacloud_rum_custom_event_new(const char *type, const char *name);
void alibabacloud_rum_custom_event_set_value(alibabacloud_rum_custom_event_t *event, double value);
void alibabacloud_rum_custom_event_set_group(alibabacloud_rum_custom_event_t *event, const char *group);
void alibabacloud_rum_custom_event_set_snapshots(alibabacloud_rum_custom_event_t *event, const char *snapshots);
void alibabacloud_rum_custom_event_add_extra(alibabacloud_rum_custom_event_t *event, const char *k, const  char *v);
void alibabacloud_rum_custom_event_free(alibabacloud_rum_custom_event_t *event);
void alibabacloud_rum_custom_event_report(alibabacloud_rum_custom_event_t *event);

函数名称

说明

alibabacloud_rum_custom_event_new

创建 alibabacloud_rum_custom_event_t 实例。

alibabacloud_rum_custom_event_set_value

设置事件关联值。

alibabacloud_rum_custom_event_set_group

设置事件分组。

alibabacloud_rum_custom_event_set_snapshots

设置事件快照。

alibabacloud_rum_custom_event_add_extra

设置事件扩展参数。

alibabacloud_rum_custom_event_free

释放 alibabacloud_rum_custom_event_t 实例,一般无需调用。

alibabacloud_rum_custom_event_report

上报自定义事件。

示例:

alibabacloud_rum_custom_event_t *event = alibabacloud_rum_custom_event_new("custom_event_type", "custom_event_name");
alibabacloud_rum_custom_event_set_group(event, "custom_event_group");
alibabacloud_rum_custom_event_set_value(event, 123.3456);
alibabacloud_rum_custom_event_set_snapshots(event, "custom event snapshots");
alibabacloud_rum_custom_event_add_extra(event, "event_key1", "event_value1");
alibabacloud_rum_custom_event_add_extra(event, "event_key2", "event_value2");
alibabacloud_rum_custom_event_report(event);

上报自定义日志

SDK支持上报自定义日志信息。调用相应的接口,并传入相应的参数,可完成自定义日志数据的统计功能。C/C++ SDK提供了一组函数用来完成自定义日志的上报。

alibabacloud_rum_custom_log_t *alibabacloud_rum_custom_log_new(const char *type, const char *name);
void alibabacloud_rum_custom_log_set_log(alibabacloud_rum_custom_log_t *log, alibabacloud_rum_custom_log_level_t level, const char *content);
void alibabacloud_rum_custom_log_set_value(alibabacloud_rum_custom_log_t *log, double value);
void alibabacloud_rum_custom_log_set_group(alibabacloud_rum_custom_log_t *log, const char *group);
void alibabacloud_rum_custom_log_set_snapshots(alibabacloud_rum_custom_log_t *log, const char *snapshots);
void alibabacloud_rum_custom_log_add_extra(alibabacloud_rum_custom_log_t *log, const char *k, const char *v);
void alibabacloud_rum_custom_log_free(alibabacloud_rum_custom_log_t *log);
void alibabacloud_rum_custom_log_report(alibabacloud_rum_custom_log_t *log);

函数名称

说明

alibabacloud_rum_custom_log_t

创建 alibabacloud_rum_custom_log_t 实例。

alibabacloud_rum_custom_log_set_log

设置日志内容。

alibabacloud_rum_custom_log_set_value

设置日志关联值。

alibabacloud_rum_custom_log_set_group

设置日志分组。

alibabacloud_rum_custom_log_set_snapshots

设置日志快照。

alibabacloud_rum_custom_log_add_extra

设置日志扩展参数。

alibabacloud_rum_custom_log_free

释放 alibabacloud_rum_custom_log_t 实例,一般无需调用。

alibabacloud_rum_custom_log_report

上报自定义日志。

示例:

alibabacloud_rum_custom_log_t *log = alibabacloud_rum_custom_log_new("custom_log_type", "custom_log_name");
alibabacloud_rum_custom_log_set_group(log, "custom_log_group");
alibabacloud_rum_custom_log_set_value(log, 343.4222);
alibabacloud_rum_custom_log_set_snapshots(log, "custom log snapshots");
alibabacloud_rum_custom_log_set_log(log, LOG_DEBUG, "我是自定义日志内容");
alibabacloud_rum_custom_log_add_extra(log, "log_key1", "log_value1");
alibabacloud_rum_custom_log_add_extra(log, "log_key2", "log_value2");
alibabacloud_rum_custom_log_report(log);