集中管理サーバーへログを送信する (LCC.log)
宣言
LCC.log(id, ...)
LCC.log(log_map)
引数
- id
整数。範囲は 1~6 で、集中管理サーバーの 6 つのログチャンネルに対応します - ...
可変長引数。文字列、テーブル、
ImageObject、またはLCC.capture_ui_state()が返す UI 状態オブジェクトを指定できます。通常のテーブルはtable.deep_dumpでシリアライズされ、文字列では[DATE]と[LINE]のプレースホルダーを使用できます - log_map
テーブル。キーはログの別名(
set_log_aliasesによる設定が必要)で、値には文字列、テーブル、ImageObject、UI 状態オブジェクト、またはこれらを含む配列テーブルを指定できます
戻り値
- なし
説明
送信前に集中管理サーバーのアドレスが設定されているか検証し、未設定の場合はエラーをスローします。
ネットワーク障害が発生すると成功するまで繰り返し再試行し、その間はsys.toastで通知します。
別名テーブルを使用する場合は、別名と一致するキーだけを送信し、別名に対応する列番号へ書き込みます。
別名テーブルに一致するキーがない場合、この呼び出しではリクエストを送信しません。
例
LCC.log(1, "[DATE] 同期を開始", { count = 128 })
LCC.log({
["状態"] = "同期完了",
["エラー"] = "0"
})
画像ログ
LCC.log では、テキスト、通常のテーブル、画像を組み合わせられます。ImageObject を渡すと、既定では PNG としてログへ書き込みます。data:image/png;base64,... または data:image/jpeg;base64,... 形式の文字列を渡した場合も、画像として自動認識されます。
LCC.log(1, "開始", screen.image(100, 100, 200, 200), "終了")
転送量を減らす場合は、画像を JPEG data URL に圧縮してから渡すこともできます。
local img = screen.image(100, 100, 200, 200)
local jpg = "data:image/jpeg;base64," .. img:jpeg_data(0.7):base64_encode()
LCC.log(1, "圧縮スクリーンショット", jpg)
img:destroy()
別名テーブル形式も画像ログに対応しています。通常のテーブルに画像が含まれない場合は、従来どおり table.deep_dump で出力します。配列テーブルに画像が含まれる場合は、配列の順序でテキストと画像を表示します。
LCC.set_log_aliases({ "状態", "エラー" })
LCC.log({
["状態"] = { "こんにちは", screen.image(243, 247, 336, 345), "世界" },
["エラー"] = "0"
})
画像ログは、問題の診断や重要な現場の記録に適しており、通常の進捗ログの一部としては推奨しません。画像 1 枚は最大 20 MiB、ログ 1 件に含まれる画像の合計も最大 20 MiB、画像 1 枚は最大 1,200 万ピクセル、ログ 1 件あたり最大 8 枚です。上限を超える場合や画像形式が未対応の場合、LCC.log は直ちにエラーを返します。画像はログリクエストとともにアップロードされます。デバイス数が多い、スクリーンショット範囲が広い、またはログ出力が高頻度の場合、画像によってローカルネットワークの転送量、サーバー側のデコード処理、ディスク書き込みの負荷が大幅に増え、他の制御リクエストへの応答が遅くなることがあります。スクリーンショットは重要な手順でのみ記録し、確認が必要な範囲までなるべく切り抜くことを推奨します。継続的にサンプリングする場合は、頻度を下げるか、自分で JPEG data URL に圧縮してください。
UI 状態ログ
LCC.log は、ログ内容の引数または別名テーブルの値として、LCC.capture_ui_state() が返すオブジェクトを受け取れます。UI 状態オブジェクト自体はログの別名テーブルではないため、ログチャンネルを指定する必要があります。LCC.log(state) は引数エラーをスローします。LCC.capture_ui_state() には、デバイス側の ui_element 0.6.0 以降が必要です。モジュールが利用できない、またはバージョンが古い場合は、capture_ui_state を使用する前に XXTouch を更新してください。ログにはオブジェクトがキャッシュしている元の .xxtuie バイト列がアップロードされ、テキストのフォールバックは [界面状态] になります。別名テーブル形式や、テキストと画像を組み合わせた配列形式にも対応しています。
local state = LCC.capture_ui_state()
LCC.log(1, "送信に失敗しました", state)
state:destroy()
1 回の HTTP リクエストに含められる UI 状態は 1 件までです。同じリクエスト内の通常画像と UI 状態は、デコード後の合計が 20 MiB を超えてはなりません。オブジェクトの破棄後はログへ書き込めません。状態の取得、ローカル保存、リソース解放については、LCC.capture_ui_state を参照してください。
ログ履歴では、画像と UI 状態が添付カードとして表示されます。画像をクリックすると原寸画像をプレビューし、プレビューからカラーピッカーを開けます。UI 状態カードをクリックするとテキスト要素ツールへ移動し、スクリーンショットと要素ツリーを復元します。添付ファイルを含むログをエクスポートするときは、プレーンテキストのみ、または閲覧可能な HTML、原寸画像、元の .xxtuie を含む zip ファイルを選択できます。添付ファイルがすでに失われている場合、HTML には欠落を示すプレースホルダーが表示されますが、他のログ内容と残っている添付ファイルは引き続きエクスポートされます。