iOS SDK
所有文档

          百度日志服务 BLS

          iOS SDK

          简介

          本文档主要介绍百度智能云日志服务 iOS SDK的安装和使用。

          本文档假设您已经开通了百度智能云日志服务。

          如果您还没有开通或者还不了解日志服务,请登录 日志服务产品主页 获取更多的帮助。

          环境要求

          • iOS系统版本:9.0及以上
          • 必须注册有百度智能云用户账户,并开通日志服务

          安装SDK工具包

          安装步骤

          1. 在官方下载SDK压缩包,解压得到BDLogServiceSDK.framework。
          2. 根据需要将framework复制到您的Xcode工程目录下,例如lib目录。
          3. 在Xcode右键工程->Add files to "your project",导入您刚才复制的framework。

          SDK目录结构

          |_BDLogServiceSDK.framework                   // BLS SDK
          | |____Headers
          |   |____BDLogServiceSDK.h                    // BLS 头文件说明
          |   |____BDLogServiceConfig.h                 // BLS 配置类
          |   |____BDLogServiceClient.h                 // BLS 客户端类
          |   |____BDLogServiceClient+LogStore.h        // BLS 日志集相关接口类
          |   |____BDLogServiceClient+LogStream.h       // BLS 日志流相关接口类
          |   |____BDLogServiceClient+LogRecord.h       // BLS 读写日志相关接口类
          |   |____BDLogServiceClient+FastQuery.h       // BLS 快速查询相关接口类
          |   |____BDLogServiceClient+Index.h           // BLS 索引相关接口类
          |   |____LogStore.h                           // BLS 日志集 Model 类
          |   |____LogStream.h                          // BLS 日志流 Model 类
          |   |____LogRecord.h                          // BLS 日志记录 Model 类
          |   |____FastQuery.h                          // BLS 快速查询 Model 类
          |   |____LogStoreIndex.h                      // BLS 日志集索引 Model 类
          |   |____BDLogServiceConstants.h              // BLS 常量定义
          |   |____BDCloudSigner.h                      // BLS AK、SK签名类

          SDK使用

          示例1:上传日志

          1. 初始化设置ak/sk,Endpoint,创建 BDLogServiceClient 对象。(可用的 Endpoint 可以在 API参考-服务域名查看)
          //初始化AK SK                 
          NSString *ak = @"<access key>";    
          NSString *sk = @"<secret key>";
          NSString *endpoint = @"<endpoint>";
          BDLogServiceConfig *config = [[BDLogServiceConfig alloc] initWithEndpoint:endpoint accessKey:ak secretKey:sk];
          BDLogServiceClient *client = [[BDLogServiceClient alloc] initWithConfig: config];
          1. 调用 pushLogRecord 接口上传日志

            日志记录的格式可以是 TEXT,也可以是 JSON 格式。如果是 TEXT,则不对日志进行解析;如果是 JSON 格式,可以自动发现 JSON 字段(仅支持首层字段发现,暂不支持嵌套类型字段的自动发现)。

            如果既想上传日志原文,又想上传解析出的具体字段,可以使用 JSON 格式进行上传,并在 JSON 中包含日志原文(使用 @raw 作为key,日志原文作为 value)。 BLS 解析到 @raw 的时候,会将其内容作为日志原文处理。

            例如:

            • TEXT 类型
             LogRecord *logRecord = [[LogRecord alloc] initWithMessage: @"this is log."]
            • JSON 类型
             LogRecord *logRecord = [[LogRecord alloc] initWithMessage: @"{\"level\":\"info\", \"status\": 200, \"cost\": 304.87}"]
            • JSON 类型,包括日志原文
             LogRecord *logRecord = [[LogRecord alloc] initWithMessage: @"{\"@raw\":\"info 200 304.87ms this is log.\", \"level\":\"info\", \"status\": 200, \"cost\": 304.87}"]
          //配置参数,请求接口 
          NSString *logStoreName = @"<自定义名称>";
          NSString *logStreamName = @"<自定义名称>"; 
          NSInteger time = (NSInteger)([NSDate date].timeIntervalSince1970 * 1000); //日志时间戳,不能大于当前时间戳,单位毫秒
          NSString *type = @"TEXT"; //日志记录格式,支持 JSON/TEXT,默认为 TEXT,详情请参考上述日志记录格式说明,一次上传请求的日志记录都要是同一种格式
          NSArray *logRecords = @[
              @{
                  @"message":@"<日志内容,可以是文本内容,或者 JSON 字符串,参考上述日志记录格式说明>",
                  @"timestamp":[NSNumber numberWithInteger:time]
              },
              @{
                  @"message": @"<日志内容,可以是文本内容,或者 JSON 字符串,参考上述日志记录格式说明>",
                  @"timestamp": [NSNumber numberWithInteger:time]
              }
          ]; //日志记录
          __weak typeof(self) weakSelf = self;  
          [client pushLogRecordWithLogStoreName:logStoreName   logStreamName:logStreamName type:type logRecords:logRecords completion:^(NSDictionary * _Nonnull resultDic, NSError * _Nonnull error) {       
          //resultDic返回服务器返回的数据结果
              if(error){ //失败
                  NSLog(@"%@ %@", resultDic[@"message"], error);
              } else { //成功
                  NSLog(@"推送日志记录成功");
              }
          }];

          示例2:创建日志集

          1. 初始化设置ak/sk,Endpoint,创建 BDLogServiceClient 对象。(可用的 Endpoint 可以在 API参考-服务域名查看)
          //初始化AK SK                 
          NSString *ak = @"<access key>";    
          NSString *sk = @"<secret key>";
          NSString *endpoint = @"<endpoint>";
          BDLogServiceConfig *config = [[BDLogServiceConfig alloc] initWithEndpoint:endpoint accessKey:ak secretKey:sk];
          BDLogServiceClient *client = [[BDLogServiceClient alloc] initWithConfig: config];
          1. 调用 createLogStore 接口创建日志集
          //配置参数,请求接口 
          NSString *logStoreName = @"<自定义名称>"; 
          NSString *retention =  @"10";  // 日志集的租期,单位:天数 
          __weak typeof(self) weakSelf = self;  
          [client createLogStoreWithLogStoreName:logStoreName   retention:[retention intValue] completion:^(NSDictionary * _Nonnull resultDic, NSError * _Nonnull error) {
          //resultDic返回服务器返回的数据结果
              if(error){ //失败
                  NSLog(@"%@ %@", resultDic[@"message"], error);
              } else { //成功
                  NSLog(@"创建LogStore成功");
              }
          }];

          其他服务接口的调用过程与示例相似。关于 SDK 使用到的 API 具体用法,可以参考:API 参考 - 概览

          上一篇
          API 参考
          下一篇
          Android SDK