日志上报

最近更新时间:2025-08-15 18:09:12

我的收藏

简介

本文档主要介绍 COS iOS SDK 如何集成日志上报功能。
注意:
COS iOS SDK 版本需要大于等于 v6.3.6。

功能说明

日志上报功能将客户端 COS SDK 的运行日志,上报至腾讯云日志服务 CLS。您可在 COS 控制台上查看请求成功率、任务次数、错误码以及地域等数据,便于您后续分析和了解业务运行情况。

费用说明

说明:
客户端 COS SDK的日志将被上报至腾讯云日志服务 CLS。上报后的日志,按照 CLS 计费规则计费,详情请参见 计费概述
停止日志上报的方式有两种:
1. 在 podfile 中删除pod "QCloudTrack/Cls" 重新pod install,并删除初始化代码。 即可不再进行 CLS 日志上报初始化。
2. 从控制台删除对应的应用,删除应用将删除该应用的所有历史日志数据,且不可恢复。该操作属于高危操作,请您谨慎操作。

准备事项

登录 对象存储控制台-客户端日志分析,创建应用,相关操作请参见 日志上报-操作指南

操作步骤

步骤1:安装 CLS SDK

在 podfile 文件中加入:
pod "QCloudTrack/Cls"
执行 pod install 即可。

步骤2:初始化 CLS SDK

1. 前往准备事项中的应用列表,点击应用名称配置详情,进入该应用详情页。



2. 基本信息页签中获取到日志主题 ID 地域,地域信息请参见 日志地域说明,例如:日志主题 ID 为 c09216e3-ade5-4725-a000-000000000000,地域为 ap-guangzhou。
如果要使用匿名模式进行日志上报,则需要在创建应用时开启匿名访问并勾选 Android/iOS,或者在应用的基本信息中开启和勾选。



3. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中加入以下代码:
匿名模式
非匿名模式
固定密钥(仅测试)
匿名模式需要在创建应用时开启匿名访问并勾选 Android/iOS,或者在应用的基本信息中开启和勾选。
// 使用 TopicId 和 endpoint 示例化 CLS 上报服务(QCloudCLSTrackService);
QCloudCLSTrackService * service = [[QCloudCLSTrackService alloc]initWithTopicId:@"日志主题ID" endpoint:@"地域"];
// 将示例化的service 加入 QCloudTrackService 中并指定serviceKey
// serviceKey 固定值:qcloud_track_cos_sdk。
[[QCloudTrackService singleService] addTrackService:service serviceKey:@"qcloud_track_cos_sdk"];
注意:
COS iOS SDK 版本大于等于 v6.4.1开始支持匿名模式。
注意:
建议用户 使用临时密钥,通过临时授权的方式进一步提高安全性。申请临时密钥时,请遵循 最小权限指引原则,防止泄露目标之外的资源。
如果您一定要使用永久密钥,建议遵循 最小权限指引原则 对永久密钥的权限范围进行限制。
临时密钥的获取可以参考:使用临时密钥访问 CLS获取联合身份临时访问凭证(授权策略中 action 设置为 name/cls:pushLog)。
// 使用 TopicId 和 endpoint 示例化 CLS 上报服务(QCloudCLSTrackService);
QCloudCLSTrackService * service = [[QCloudCLSTrackService alloc]initWithTopicId:@"日志主题ID" endpoint:@"地域"];
// 设置临时密钥回调
[service setupCredentialsRefreshBlock:^QCloudClsSessionCredentials * _Nonnull{
QCloudClsSessionCredentials * credentials = [QCloudClsSessionCredentials new];
credentials.secretId = @"SECRETID"; // 临时密钥 SecretId
credentials.secretKey = @"SECRETKEY"; // 临时密钥 SecretKey
credentials.token = @"SESSIONTOKEN"; // 临时密钥 Token
credentials.expiredTime = 1556183496L;//临时密钥有效截止时间戳,单位是秒
// 最后返回临时密钥信息对象
return credentials;
}];
// 将示例化的service 加入 QCloudTrackService 中并指定serviceKey
// serviceKey 固定值:qcloud_track_cos_sdk。
[[QCloudTrackService singleService] addTrackService:service serviceKey:@"qcloud_track_cos_sdk"];
注意:
开发模式调试上报时请将项目切换为 Release 模式运行,或将 DEBUG 宏改为0。
QCloudClsSessionCredentials * credentials = [QCloudClsSessionCredentials new];
//用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。
//子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
credentials.secretId = @"SECRETID";

//用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。
//子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
credentials.secretKey = @"SECRETKEY";

[service setupPermanentCredentials:cre];

步骤3:设置网络权限

CLS 日志上传是基于 HTTP 的,因此需要配置支持 HTTP 请求,需要在项目的 info.plist 文件中添加 App Transport Security Settings->Allow Arbitrary Loads ,并设置为 YES。

步骤4:配置自定义字段

1. 在日志主题索引字段中增加自定义字段。
2. 代码中设置上述自定义字段和具体的值。
NSDictionary * businessParams = @{
@"businessKey1":@"businessValue1",
@"businessKey2":@"businessValue2",
@"businessKey3":@"businessValue3"
};
[[QCloudTrackService singleService] setBusinessParams:businessParams];

步骤5:结果验证

前往应用的日志数据详情中进行验证,详情请参考 日志分析