平台给指定用户下发回捞日志的命令,将自定义日志信息上传,便于开发者单点追查、定位问题。
初始化Parfait SDK。持有初始化成功的parfait_wrapper_ptr指针。具体请参见接入说明。
初始化ALog。
初始化SDK成功后,会创建alog_dir/alog/cache
和alog_dir/alog/log
两个文件夹。
/** * 初始化alog * @param alog_dir alog文件的存储路径,绝对路径 * @param process_name 进程名 */ void ParfaitWrapperBase::InitAlog(const char* alog_dir, const char* process_name);
写日志。
/** * 写Alog日志 * @param tag tag内容 * @param msg 日志内容 */ void ParfaitWrapperBase::WriteAlog(const char* tag, const char* msg); //示例代码 parfait_wrapper_ptr->WriteAlog("alog_test", "你好");
日志格式如下所示:
// format: [YYYY-MM-DD TIMEZONE HH-MM-SS.SSS][PID:THREADID][LEVEL][TAG][,] MESSAGE // example: [2021-04-09 GMT+08:00 15:54:48.028][57999:1717306][I][alog_test][, , ]新的测试
功能介绍:用户在代码打开云控回捞功能后,parfait会轮询下发云控命令的接口并上报指定文件。用户可以在日志回捞页面下发云控命令,回捞指定DID的文件。
使用方法:用户可以自定义轮询间隔。
/** * 开启云控回捞功能 * @param interval 轮询频率,单位ms,不设置默认30s */ void ParfaitWrapperBase::OpenCloudMessage(long interval_ms = 30 * 1000); //示例代码 parfait_wrapper_ptr->OpenCloudMessage(long interval);
开启之后可在日志回捞界面单击右上角的新增配置下发回捞命令。
配置项说明:
参数 | 说明 |
---|---|
Device id | 设备ID。目前仅支持按DID回捞。 |
配置有效时间 | 默认为24小时。 |
配置类型 | Alog日志回捞。 |
指令 | Alog日志回捞。 |
用户上线后收到回捞指令,平台上显示命令已下发。客户端开始上报相应的文件,上报成功后,用户可以下载ALog文件查看内容。
功能介绍:主动上报某时间段的alog日志。
适用场景:根据业务需求主动上报。
接口一:不关心是否上传成功 /** * @param start_time 开始时间戳,精确到秒 * @param end_time 结束时间戳,精确到秒 */ void ParfaitWrapperBase::UploadAlog(long start_time, long end_time); // e.g.: parfait_wrapper_ptr->UploadAlog(1620662400, 1610662400); 接口二:需要获取上传结果,并注入上下文信息 /** * @brief Uploads alog files from start_time_s to end_time_s. This is a async API. * * @param start_time_s Timestamp. The unit is second. * @param end_time_s Timestamp. The unit is second. * @param custom_context This custom context will be passed back through AlogUploadDetailsCallback. * @param nullable_callback Returns upload result. */ void UploadAlogWithCallback(long start_time_s, long end_time_s, void* custom_context, const AlogUploadDetailsCallback nullable_callback); // e.g.: void AlogCallback(bool is_success, int total_file_count, int success_count, const char* error_msg, void* custom_context) { if (!is_success && total_file_count == 0) { printf("Failed to uploaded alog,because there isn't any alog files. \n"); } if (is_success) { printf("Uploaded %d alog files to apmplus.\n", success_count); } else { printf("Failed to uploaded %d alog files to apmplus. Success num: %d, error_msg: %s.\n", total_file_count, success_count, error_msg); } if (custom_context) { printf("This is my context: %s. \n", (char*)custom_context); } } void UploadAlog() { char context[100] = "my context"; long timenow_second = static_cast<long>(time(nullptr)); // 上传前三十分钟的alog parfait_wrapper_ptr->UploadAlogWithCallback(timenow_second - 30 * 60, timenow_second, context, &AlogCallback); }
功能介绍:主动上报异常时间前半小时的alog日志,并展示在异常详情页上。
适用场景:parfait初始化SDK和alog后调用。
/** * 三端通用 * 开启后,发生异常/上报异常时parfait自动上传崩溃前半小时的alog文件 */ void ParfaitWrapperBase::UploadAlogIfCrashed(); //示例代码 parfait_wrapper_ptr->UploadAlogIfCrashed();
日志文件查询页面展示回捞、崩溃、主动上报的alog日志,页面下alog日志已解密。