本文介紹如何快速使用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 | 快取資料寫入磁碟失敗 | 快取檔案路徑配置不正確,或快取檔案已經寫滿,或系統磁碟空間不夠導致寫入失敗。 |