快速开始
更新时间:2023-09-21
简介
本文档主要介绍百度智能云日志服务 iOS SDK的安装和使用。
本文档假设您已经开通了百度智能云日志服务。
如果您还没有开通或者还不了解日志服务,请登录 日志服务产品主页 获取更多的帮助。
环境要求
- iOS系统版本:9.0及以上
- 必须注册有百度智能云用户账户,并开通日志服务
安装SDK工具包
安装步骤
- 在 百度智能云开发者中心 的 客户端 SDK 列表找到百度日志服务,下载SDK压缩包,解压得到BDLogServiceSDK.framework。
- 根据需要将framework复制到您的Xcode工程目录下,例如lib目录。
- 在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 索引相关接口类
| |____BDLogServiceClient+LogShipper.h // BLS 日志投递相关接口类
| |____LogStore.h // BLS 日志集 Model 类
| |____LogStream.h // BLS 日志流 Model 类
| |____LogRecord.h // BLS 日志记录 Model 类
| |____FastQuery.h // BLS 快速查询 Model 类
| |____LogStoreIndex.h // BLS 日志集索引 Model 类
| |____LogShipper.h // BLS 日志投递 Model 类
| |____BDLogServiceConstants.h // BLS 常量定义
| |____BDCloudSigner.h // BLS AK、SK签名类
SDK使用
示例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];
-
调用 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:创建日志集
- 初始化设置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];
- 调用 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 参考 - 概览