Simple Log Service の HarmonyOS SDK を使用して、HarmonyOS デバイスからログデータを収集します。
前提条件
Simple Log Service の 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>" // STS 経由で AccessKey を取得した場合にのみ必要です。
);
次の表に各パラメーターの説明を示します。
|
変数 |
説明 |
例 |
|
endpoint |
エンドポイントは Simple Log Service にアクセスするためのドメイン名です。 エンドポイントはプロジェクトのリージョンによって異なります。 詳細については、「エンドポイント」をご参照ください。 |
cn-hangzhou.log.aliyuncs.com |
|
project |
[プロジェクト名]:プロジェクトは Simple Log Service でのリソース管理単位です。 ユーザーの分離とアクセス制御の主要な境界となります。 詳細については、「プロジェクトの管理」をご参照ください。 |
test-project |
|
Logstore |
[Logstore 名]:Logstore は、Simple Log Service でログデータを収集、保存、クエリするための単位です。 詳細については、「Logstore の管理」をご参照ください。 |
test-logstore |
|
AccessKey ID |
AccessKey ID は、ユーザーを識別するために使用します。 詳細については、「AccessKey ペア」をご参照ください。 最小権限の原則に従い、RAM ユーザーには必要な権限のみを付与してください。 権限を付与する方法の詳細については、「RAM ユーザーの作成と権限の付与」および「カスタム RAM 認証の例」をご参照ください。 |
なし |
|
AccessKey Secret |
AccessKey Secret は、署名文字列を暗号化するために使用するキーです。 Simple Log Service はこのキーを使用して署名文字列を検証します。 AccessKey Secret は機密情報として扱ってください。 |
なし |
|
accesskey token |
AccessKey トークン。 STS 経由で AccessKey を取得した場合にのみ必要です。 |
ログの送信
addLog メソッドを使用して、カスタムビジネスログを送信します。
let code = aliyunLog.addLog(new Map(
[
["key1", "value1"],
["key2", "value2"],
["key3", "value3"],
]
));
code == 0 の場合にのみ、ログは正常に送信されます。 その他のステータスコードの詳細については、「ステータスコード」をご参照ください。
AccessKey の設定
SDK は動的な AccessKey の更新をサポートしています。 次のコードを使用して AccessKey を更新します。
aliyunLog.setAccessKey(
"<your accesskey id>", // 正しい AccessKey ID を入力します。
"<your accesskey secret>", // 正しい AccessKey Secret を入力します。
null // 正しい AccessKey トークンを入力します。 STS 経由で AccessKey を取得した場合にのみ必要です。
);
ログ送信コールバックの設定
ログ送信コールバックを設定して、各ログ配信試行のステータス通知を受信できます。 コールバックを使用して、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 トークンを入力します。 STS 経由で AccessKey を取得した場合にのみ必要です。
);
}
}
}
ステータスコード
|
ステータスコード |
説明 |
ソリューション |
|
0 |
成功 |
正常。 アクションは不要です。 |
|
1 |
SDK が破棄されたか、無効です。 |
SDK の初期化が失敗したかどうかを確認してください。 |
|
2 |
データ書き込みエラー。 |
プロジェクトが書き込みトラフィックの上限に達しました。 上限の引き上げが必要な場合は、してテクニカルサポートにお問い合わせください。 |
|
3 |
キャッシュがいっぱいです。 |
してテクニカルサポートにお問い合わせください。 |
|
4 |
ネットワークエラー。 |
ネットワーク接続を確認し、操作を再試行してください。 |
|
5 |
プロジェクトの書き込みクォータがいっぱいです。 |
プロジェクトが書き込みトラフィックの上限に達しました。 上限の引き上げが必要な場合は、してテクニカルサポートにお問い合わせください。 |
|
6 |
AccessKey の有効期限が切れているか、無効です。 |
AccessKey の有効期限が切れているか、無効であるか、または AccessKey が属するアカウントのアクセスポリシーが正しくありません。 RAM ユーザーのアクセスポリシーを確認してください。 RAM ユーザーには、Simple Log Service リソースに対する操作を実行する権限が必要です。 詳細については、「RAM ユーザーへの権限付与」をご参照ください。 |
|
7 |
サービスエラー。 |
サービスに障害が発生しました。 してテクニカルサポートにお問い合わせください。 |
|
8 |
データは破棄されます。 |
このエラーは通常、デバイスの時刻がサーバーの時刻と同期していないために発生します。 SDK はデータを自動的に再送信します。 |
|
9 |
デバイスの時刻がサーバーの時刻と同期していません。 |
デバイスの時刻がサーバーの時刻と同期していません。 SDK がこの問題を自動的に解決します。 |
|
10 |
SDK が破棄されたときに、キャッシュされたデータが送信されませんでした。 |
これにより、データ損失が発生する可能性があります。 データ損失を防ぐために、再開可能なアップロード機能を有効にすることができます。 |
|
11 |
SDK の初期化パラメーターエラー。 |
このエラーは通常、AccessKey が設定されていないか、エンドポイント、プロジェクト、または Logstore が正しく設定されていないために発生します。 パラメーター設定を確認して、再試行してください。 |
|
99 |
キャッシュされたデータのディスクへの書き込みに失敗しました。 |
キャッシュファイルのパスが正しくない、キャッシュがいっぱいである、またはディスク容量が不足しているため、書き込み操作が失敗します。 |