このトピックでは、Simple Log Service SDK for HarmonyOSを使用してHarmonyOSデバイスからログを収集する方法について説明します。
前提条件
Simple Log Service SDK for HarmonyOSがインストールされています。 詳細については、「Simple Log Service SDK For HarmonyOSのインストール」をご参照ください。
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>" // This variable is required only when the AccessKey pair is obtained by calling a Security Token Service (STS) operation.
);
Simple Log Serviceは、プロジェクトが存在するリージョンのエンドポイントを提供します。 Simple Log Serviceには、内部エンドポイントまたはパブリックエンドポイントを使用してアクセスできます。 内部エンドポイントは、クラシックネットワークまたは仮想プライベートクラウド (VPC) 経由でアクセスできます。 インターネット経由でパブリックエンドポイントにアクセスできます。 詳細については、「エンドポイント」をご参照ください。
Alibaba Cloud AccessKeyペアは、API操作を呼び出してAlibaba Cloudリソースにアクセスするために使用できる安全なID資格情報です。 AccessKeyペアを使用して、セキュリティ認証を渡すためのAPIリクエストに署名できます。 詳細は、「AccessKeyペア」をご参照ください。
レポートログ
addLogメソッドを使用して、カスタムビジネスログをレポートできます。
let code = aliyunLog.addLog(new Map(
[
["key1", "value1"],
["key2", "value2"],
["key3", "value3"],
]
));
code == 0
が返された場合、ログが報告されます。 ststusコードの詳細については、「ステータスコード」をご参照ください。
AccessKey ペアの設定
Simple Log Service SDK for HarmonyOS SDKでは、AccessKeyペアを動的に更新できます。 次のサンプルコードに基づいて、AccessKeyペアを更新できます。
aliyunLog.setAccessKey(
"<your accesskey id>", // Specify a valid AccessKey ID.
"<your accesskey secret>", // Specify a valid AccessKey secret.
null // Specify a valid AccessKey token. This variable is required only when the AccessKey pair is obtained by calling an STS operation.
);
ログ送信用のコールバックの設定
Simple Log Service SDK for HarmonyOSは、ログ送信のコールバックをサポートしています。 ログが送信されるか、送信に失敗すると、コールバック情報が生成されます。 コールバック情報を使用して、SDKのステータスを表示したり、SDKのパラメーター設定を更新したりできます。
class MyLogCallback implements LogCallback {
init() {
aliyunLog.setLogCallback(this);
}
onLogCallback(logStore:string, code:number, logBytes:number, compressedBytes:number, errorMessage:string) {
// The error code 6 indicates that the AccessKey pair is invalid.
// The error code 11 indicates that the parameter settings are invalid.
if (code == 6 || code == 11) {
aliyunLog.setAccessKey(
"<your accesskey id>", // Specify a valid AccessKey ID.
"<your accesskey secret>", // Specify a valid AccessKey secret.
null // Specify a valid AccessKey token. This variable is required only when the AccessKey pair is obtained by calling an STS operation.
);
}
}
}
ステータスコード
ステータスコード | 説明 | 解決策 |
0 | 操作は成功しました。 | 正常 操作は必要ありません。 |
1 | SDKが破棄または無効です。 | SDKの初期化に失敗したかどうかを確認します。 |
2 | データ書き込みエラーが発生しました。 | プロジェクトの書き込みトラフィックが上限に達しました。 制限を増やしたい場合は、 チケットを起票し、テクニカルサポートにお問い合わせください。 |
3 | キャッシュがいっぱいです。 | テクニカルサポートに連絡するには、チケットを起票してください。 |
4 | ネットワークエラーが発生しました。 | ネットワーク接続を確認して、もう一度お試しください。 |
5 | プロジェクトで書き込みクォータエラーが発生しました。 | プロジェクトの書き込みトラフィックが上限に達しました。 制限を増やしたい場合は、 チケットを起票し、テクニカルサポートにお問い合わせください。 |
6 | AccessKeyペアが期限切れまたは無効です。 | AccessKeyの有効期限が切れているか無効であるか、AccessKeyペアが属するRAMユーザーの権限ポリシーが正しく設定されていません。 RAMユーザーの権限ポリシーを変更して、Simple Log Serviceリソースに対する管理権限を付与します。 詳細については、「手順2: RAMユーザーに権限を付与する」をご参照ください。 |
7 | サービスエラーが発生しました。 | サービスエラーが発生しました。 テクニカルサポートに連絡するには、チケットを起票してください。 |
8 | データは破棄される。 | ほとんどの場合、エラーはデバイス時刻とサーバー時刻の不一致が原因です。 SDKは自動的にデータを再送信します。 |
9 | 時刻はサーバー時刻と同期していません。 | デバイス時刻がサーバー時刻と一致していません。 SDKは自動的にエラーをトラブルシューティングします。 |
10 | SDKが破棄されると、キャッシュされたデータは送信されません。 | データ損失が発生する可能性があります。 データの損失を防ぐため、再開可能なアップロードを有効にすることを推奨します。 |
11 | SDKの初期化中にパラメーターエラーが発生しました。 | ほとんどの場合、AccessKeyペアが指定されていないか、Endpoint、Project、Logstoreパラメーターが正しく設定されていないため、エラーが発生します。 パラメーター設定を確認して、もう一度お試しください。 |
99 | キャッシュされたデータのシステムディスクへの書き込みに失敗しました。 | ほとんどの場合、キャッシュファイルのパスが正しく設定されていない、キャッシュファイルがいっぱいである、またはシステムディスク容量が不足しているためにエラーが発生します。 |