HarmonyOS SDK快速入门

本文介绍如何快速使用日志服务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

缓存数据写入磁盘失败

缓存文件路径配置不正确,或缓存文件已经写满,或系统磁盘空间不够导致写入失败。