本文介绍如何快速使用日志服务的 HarmonyOS SDK 实现日志上传的操作。
前提条件
已安装 Harmony OS 应用开发环境。更多信息,请参见 HarmonyOS 开发者指南。
创建并获取云 API 密钥信息 access_secret 和 access_key,密钥信息获取请前往 API 密钥管理。并请确保密钥关联的账号具有相应的 SDK 上传日志权限。
安装 HarmonyOS SDK
1. 创建 Harmony OS 应用项目。
2. 导入日志服务 Harmony OS 模块,在项目下执行如下命令。
ohpm install @farmerx/tencntcloud-cls-sdk-ohos
3. 执行完成后,可以在指定的 ets 文件中导入日志服务模块,进行引用并编写代码。
import { TencntcloudLog, LogCallback } from "@farmerx/tencntcloud-cls-sdk-ohos"
请求参数
变量 | 类型 | 是否必填 | 说明 |
endpoint | String | 是 | |
access_secret | String | 是 | |
access_key | String | 是 | |
access_token | String | 否 | 临时密钥的 token,如使用临时密钥可填入。 |
topic_id | String | 是 | 日志主题的 ID 信息。 |
日志上传示例代码
在您的 Harmony 项目中,可以使用如下的示例代码实现日志上传的能力,示例代码如下所示。
import {LogProducer} from "@farmerx/tencntcloud-cls-sdk-ohos";// 初始化let producer = new LogProducer("#[topic_id]","#[access_key]","#[access_secret]","#[access_token]","","#[endpoint]", 100, 100, 2000)// 设置callback 回掉函数producer.setCallback((err: Error | null, topicID: string, code: number, request_id: string, errorMessage: string) => {if (err==null) {hilog.info(0x0000,'testTagCLS','onLogCallback.topic: %{public}s , code: %{public}d, request_id: %{public}s, errorMessage: %{public}s',topicID, code, request_id, errorMessage);} else {hilog.info(0x0000,'testTagCLS','onLogCallback.topic: %{public}s, code: %{public}d, request_id: %{public}s, errorMessage: %{public}s',topicID, code, request_id, err.message);}})// 设置来源 IPproducer.setSourceIp("127.0.0.3")// reset access keyproducer.setAccessKey("#[access_key]", "#[access_secret]", "#[access_token]");// 同步发送function syncsencLog() {let logs: Record<string, string>[] = [];let log: Record<string, string> = {};// 添加键值对log["key1"] = "value1";log["key2"] = "value2";log["key3"] = "value3";logs.push(log)try {let rsp = producer.syncSendLogs( "127.0.0.1", logs)hilog.info(0x0000, 'testTag', "========%{public}s, %{public}s", rsp.requestId, rsp.rspText)} catch (e) {// ....}}// 异步发送function asyncSendLog() {let log: Record<string, string> = {};// 添加键值对log["key1"] = "value1";log["key2"] = "value2";log["key3"] = "value3";try {producer.addLog(log)} catch (e) {// ....}}asyncSendLog()sencLog()
结语