You need to enable JavaScript to run this app.
导航

Alog日志

最近更新时间2024.03.18 17:29:58

首次发布时间2022.09.15 15:45:58

平台给指定用户下发回捞日志的命令,将自定义日志信息上传,便于开发者单点追查、定位问题。

前提条件

初始化Parfait SDK。持有初始化成功的parfait_wrapper_ptr指针。具体请参见接入说明

步骤一:写入日志

  1. 初始化ALog。
    初始化SDK成功后,会创建alog_dir/alog/cachealog_dir/alog/log两个文件夹。

    /**
     * 初始化alog
     * @param alog_dir alog文件的存储路径,绝对路径
     * @param process_name 进程名
     */
    void ParfaitWrapperBase::InitAlog(const char* alog_dir, const char* process_name);
    
  2. 写日志。

    /**
     * 写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的crashpad,崩溃后会实时上传前半小时的alog文件。
  • 如果仅使用parfait上报crash,上传crash时也会上报前半小时的alog文件。
/**
  * 三端通用
  * 开启后,发生异常/上报异常时parfait自动上传崩溃前半小时的alog文件
  */
void ParfaitWrapperBase::UploadAlogIfCrashed();

//示例代码       
parfait_wrapper_ptr->UploadAlogIfCrashed();

步骤三:查看日志

日志文件查询页面展示回捞、崩溃、主动上报的alog日志,页面下alog日志已解密。
图片