全部產品
Search
文件中心

Simple Log Service:HarmonyOS SDK快速入門

更新時間:Aug 29, 2024

本文介紹如何快速使用Log ServiceHarmonyOS SDK採集鴻蒙裝置日誌資料。

前提條件

已完成Log ServiceHarmonyOS 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,Log Service提供私網網域名稱和公網網域名稱。更多資訊,請參見服務入口

cn-hangzhou.log.aliyuncs.com

project

Log ServiceProject名稱,更多資訊,請參見管理Project

test-project

logstore

Log ServiceLogstore名稱,Logstore是Log Service中日誌資料的採集、儲存和查詢單元。更多資訊,請參見管理Logstore

test-logstore

accesskey id

AccessKey ID用於標識使用者,更多資訊,請參見存取金鑰

建議您遵循最小化原則,按需授予RAM使用者必要的許可權。關於授權的具體操作,請參見建立RAM使用者及授權RAM自訂授權樣本

accesskey secret

AccessKey Secret是使用者用於加密簽名字串和Log Service用來驗證簽名字串的密鑰,必須保密。

accesskey token

AccessKey Token,僅當AccessKey是通過STS方式擷取時才需要。

上報日誌

可以通過addLog方法上報自訂業務日誌。

let code = aliyunLog.addLog(new Map(
  [
    ["key1", "value1"],
    ["key2", "value2"],
    ["key3", "value3"],
  ]
));

僅當code == 0時才表示上報日誌成功。其他情況下返回狀態代碼的更多操作,請參見狀態代碼說明

配置AccessKey

Log ServiceHarmonyOS SDK支援對AccessKey的動態更新,您可以參考如下代碼進行AccessKey的更新配置:

aliyunLog.setAccessKey(
    "<your accesskey id>", // 填入正確的AccessKey Id
    "<your accesskey secret>", // 填入正確的AccessKey Secret
    null // 填入正確的AccessKey Token. 只有當AccessKey是通過STS方式擷取時才需要
);

設定日誌發送回調

Log ServiceHarmonyOS 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

快取資料寫入磁碟失敗

快取檔案路徑配置不正確,或快取檔案已經寫滿,或系統磁碟空間不夠導致寫入失敗。