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 | 非空,通过 | 接口调用失败,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_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_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 | 网络请求过滤器结构体。 | 非空,且需要满足以下结构体的定义:
| 接口调用失败,网络请求采集过滤器设置不会生效。 |
示例:
// 过滤指定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 |
| 接口调用失败,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 |
| 接口调用失败,崩溃数据采集模块设置不会生效。 |
示例:
// 开启崩溃数据采集模块。
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 |
| 接口调用失败,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");
设置用户扩展信息
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);