本文介绍如何快速使用日志服务HarmonyOS SDK采集鸿蒙设备日志数据。
前提条件
已完成日志服务HarmonyOS SDK安装。更多信息,请参见安装HarmonyOS SDK。
初始化SDK
您可以参考以下代码进行SDK初始化。
import { AliyunLog, LogCallback } from "@aliyunsls/producer"
let aliyunLog: AliyunLog = new AliyunLog(
"<your endpoint>",
"<your project>",
"<your logstore>",
"<your accesskey id>",
"<your accesskey secret>",
"<your accesskey token>" // 仅当AccessKey是通过STS方式获取时才需要
);
参数说明:
变量 | 说明 | 示例 |
endpoint | 服务入口是访问一个Project及其内部数据的URL,日志服务提供私网域名和公网域名。更多信息,请参见服务入口。 | cn-hangzhou.log.aliyuncs.com |
project | 日志服务Project名称,更多信息,请参见管理Project。 | test-project |
logstore | 日志服务Logstore名称,Logstore是日志服务中日志数据的采集、存储和查询单元。更多信息,请参见管理Logstore。 | test-logstore |
accesskey id | AccessKey ID用于标识用户,更多信息,请参见访问密钥。 建议您遵循最小化原则,按需授予RAM用户必要的权限。关于授权的具体操作,请参见创建RAM用户及授权,RAM自定义授权示例。 | 无 |
accesskey secret | AccessKey Secret是用户用于加密签名字符串和日志服务用来验证签名字符串的密钥,必须保密。 | 无 |
accesskey token | AccessKey Token,仅当AccessKey是通过STS方式获取时才需要。 |
上报日志
可以通过addLog方法上报自定义业务日志。
let code = aliyunLog.addLog(new Map(
[
["key1", "value1"],
["key2", "value2"],
["key3", "value3"],
]
));
仅当code == 0
时才表示上报日志成功。其他情况下返回状态码的更多操作,请参见状态码说明。
配置AccessKey
日志服务HarmonyOS SDK支持对AccessKey的动态更新,您可以参考如下代码进行AccessKey的更新配置:
aliyunLog.setAccessKey(
"<your accesskey id>", // 填入正确的AccessKey Id
"<your accesskey secret>", // 填入正确的AccessKey Secret
null // 填入正确的AccessKey Token. 只有当AccessKey是通过STS方式获取时才需要
);
设置日志发送回调
日志服务HarmonyOS SDK支持设置日志发送回调。日志发送成功或失败时,都会产生对应的回调信息。您可以通过回调信息来确定SDK的运行情况,或者更新SDK的参数配置。
class MyLogCallback implements LogCallback {
init() {
aliyunLog.setLogCallback(this);
}
onLogCallback(logStore:string, code:number, logBytes:number, compressedBytes:number, errorMessage:string) {
// 错误码为6表示AccessKey无效
// 错误码为11表示参数配置错误
if (code == 6 || code == 11) {
aliyunLog.setAccessKey(
"<your accesskey id>", // 填入正确的AccessKey Id
"<your accesskey secret>", // 填入正确的AccessKey Secret
null // 填入正确的AccessKey Token. 只有当AccessKey是通过STS方式获取时才需要
);
}
}
}
状态码说明
状态码 | 说明 | 解决方法 |
0 | 成功 | 正常,无需处理。 |
1 | SDK已销毁或无效 | 检查SDK是否初始化失败。 |
2 | 数据写入错误 | Project写入流量已达上限。如果您有更大的使用需求,请提工单申请联系技术支持。 |
3 | 缓存已满 | 请提工单申请联系技术支持。 |
4 | 网络错误 | 请检查网络连接情况后重试。 |
5 | Project写Quota已满 | Project写入流量已达上限。如果您有更大的使用需求,请提工单申请联系技术支持。 |
6 | AK授权过期或无效 | AccessKey过期或无效,或AccessKey所属账号权限策略配置不正确。请检测RAM用户权限策略,RAM用户需具备操作日志服务资源的权限。具体操作,请参见为RAM用户授权。 |
7 | 服务错误 | 服务故障。请提工单申请联系技术支持。 |
8 | 数据被丢弃 | 一般是设备时间与服务器时间不同步导致,SDK会自动重新发送。 |
9 | 与服务器时间不同步 | 设备时间与服务器时间不同步,SDK会自动修复该问题。 |
10 | SDK销毁时,缓存数据还没有发出 | 可能会导致数据丢失,建议开启断点续传功能,可避免数据丢失。 |
11 | SDK初始化参数错误 | 一般是AccessKey没有配置,或Endpoint、Project、Logstore配置不正确导致。请重新检测后重试。 |
99 | 缓存数据写入磁盘失败 | 缓存文件路径配置不正确,或缓存文件已经写满,或系统磁盘空间不够导致写入失败。 |