Loggingctlを使用したシステムログの管理
ログ制御CLI(LoggingCtl)は、Vegaデバイス上のログデータを管理、表示、テストするためのコマンドラインインターフェイス(CLI)ツールです。デバイスに保存されているクラッシュレポート(ACRファイル)にアクセスすることもできます。loggingctlコマンドにアクセスするには、vega exec vda shellコマンドを使用して、Vegaデバイスシェルに入る必要があります。
このツールを使用すると、次の操作を実行できます。
- リアルタイムのログモニタリングを通じてアプリの問題をデバッグする。
- さまざまなプロセスのログレベルとレートを構成する。
- 保存されているログとクラッシュレポートにアクセスして分析する。
- ログストレージと保存期間を管理する。
- 診断データを使用してシステムの問題を調査する。
新しいアプリをインストールした後にLoggingCtlを起動または再起動する方法
LoggingCtlでは、セッションの開始時にインストール済みのアプリに基づいてログ権限を決定します。LoggingCtlの開始後にインストールされたアプリのログは、LoggingCtlセッションを再起動するまで表示されません。
基本的な使用方法
$ loggingctl
Logging CTL
使用方法:loggingctl <コマンド>
コマンド:
config 構成コマンド - ログシステムの優先度とレート制限を編集します。
log ログ表示コマンド - デバイスで生成されたランタイムログを照会します。
vault ボールトコマンド - デバイスにアーカイブされているログデータとクラッシュデータを照会します。
test テストコマンド - システムのテストに使用されるコマンドです。内部使用のみ。
help このメッセージを表示するか、特定のサブコマンドのヘルプを表示します。
オプション:
-h、--help ヘルプを表示します。
-V、--version バージョンを表示します。
configコマンド
アプリのログ動作を制御するには、loggingctl configコマンドを使用します。(注:画面の出力に関する日本語表記は説明のために提供しています。実際には英語で表示されます。)
$ loggingctl config [オプション]
オプション:
--set-level <プロセス> <レベル> 最小の優先度レベルを設定します(例:"my-service info")。
--get-level <プロセス> 最小の優先度レベルを取得します。
--mute <プロセス> すべてのログをミュートします。
--set-rate <プロセス> <レート> 最大のログレート制限を設定します(例:"my-service 100")。
--get-rate <プロセス> 最大のログレート制限を取得します。
-h、--help ヘルプを表示します。
構成のリセット
ログ構成をデフォルトにリセットする方法は次のとおりです。
-
レート制限: レートをデフォルト値(1000)に戻します。
loggingctl config --set-rate <プロセス> 1000警告:--set-levelを使用する場合、レートを300ログ/秒超に増やすと、システム負荷の増加によりログが失われる可能性があります。 -
ログレベル: レベルをデフォルト(info)に戻します。
loggingctl config --set-level <プロセス> info -
システム全体への変更の適用(レートまたはレベルの変更後に必要): ロギングサービスを再起動します。
systemctl restart systemd-journald
logコマンド
loggingctl logコマンドを使用すると、systemd-journaldメモリからリアルタイムでログを表示したり、保存されているデータからログを表示したりできます。
デフォルトでは、loggingctl logコマンドは現在のセッションからのログのみを表示します。古いログを表示するには、Vega仮想デバイスで--bootオプションを使用します。Fire TV Stickでは、loggingctl vaultコマンドを使用して以前のログを表示できます。
$ loggingctl log
ログ表示コマンド - デバイスで生成されたランタイムログを照会します。
使用方法:loggingctl log [オプション]
オプション:
-f、--follow 記録中のログをフォローします。
-p、--priority <優先度> 優先度で絞り込み:指定した優先度のみに絞り込みます。複数回定義できます。
-k, --kernel カーネルログのみに絞り込みます(実装されていません)
-t、--identity <ID> SYSLOG_IDENTIFIERで絞り込みます。複数回定義できます。
-a、--tag <タグ> ログのタグ文字列で絞り込みます。複数回定義できます。
-b、--boot <ブート> ブートIDで絞り込みます。複数回定義できます。
-P、--pid <PID> PIDで絞り込みます。複数回定義できます。
-T、--tid <TID> TIDで絞り込みます。複数回定義できます。
-F、--facility <ファシリティ> SYSLOG_FACILITYで絞り込みます。複数回定義できます。
-S、--since <開始時刻> 指定した時刻以降で絞り込みます。1回だけ定義できます。
-U、--until <終了時刻> 指定した時刻までで絞り込みます。1回だけ定義できます。
-o、--output-format <出力形式> 出力形式を"short_precise"または"short_concise"(デフォルト)で指定します。 無効な文字列を指定するとデフォルトの出力に設定されます。1回だけ定義できます。
-v、--vpkg <VPKG> パッケージIDでフィルタリングします。複数回定義できます。
-h、--help ヘルプを表示します。
ログの表示に推奨されるフィルター
React NativeおよびJavaScriptの開発者の場合、特定のアプリのログを表示するには、パッケージIDフィルター(-v)を使用します。
# アプリのパッケージIDでログをフィルタリングします(推奨)。
loggingctl log -v "com.amazondeveloper.yourapp" -f
# 優先度レベルでフィルタリングします(console.*メソッドで動作します)。
loggingctl log -v "com.amazondeveloper.yourapp" -p err -f
ログのフォローを停止するには、Ctrl+Cを押します。
-vで指定するパッケージIDは、構成コマンドで使用される識別子(<プロセス>パラメーター)と同じです。アプリのログが表示されない場合:
LoggingCtlは、セッションの開始前にインストールされていたアプリのみを検出します。LoggingCtlの起動後にアプリをインストールした場合は、アプリを再インストールし、セッションを再起動してください。
-
アプリを手動でインストールします。
vega exec vda shell vpm install <VPKGのパス> -
LoggingCtlを起動します。
vega exec vda shell loggingctl log -f -
vmsgr sendを使用してアプリを起動します。vega exec vda shell vmsgr send pkg://com.amazondeveloper.yourapp.main
JavaScriptロギングに関する注意事項
VegaアプリでJavaScriptロギングを使用する場合:
推奨アプローチ: ログレベルのフィルタリングにはconsole.*メソッドを使用します。
console.log("Info message"); // INFO レベルにマッピングします。
console.warn("Warning message"); // WARNINGレベルにマッピングします。
console.error("Error message"); // ERRORレベルにマッピングします。
console.*メソッドを使用してください。サポートされている引数キーワード
--priority、--facility、--since、--until、--output-formatの各コマンドは、特定のキーワードを受け取ります。
-
優先度レベル - 優先度レベルを設定してログの表示を制御するには、
--priorityを使用します。これにより、指定の優先度レベルのみを表示するようにログ出力がフィルタリングされ、独自のコンポーネントやその他のプロセスのログに集中しやすくなります。- emerg - システム利用不可。マップ先:
- APMF_LOG(…, FATAL)
- alert - 即時対応が必要。
- crit - 重大な状態。マップ先:
- LOG_F(FATAL)
- LOG_S(FATAL)
- err - エラー状態。マップ先:
- APMF_LOG(…, ERROR)
- LOG_F(ERROR)
- LOG_S(ERROR)
console.error()(JavaScript)
- warning - 警告状態。マップ先:
- APMF_LOG(…, WARNING)
- LOG_F(WARNING)
- LOG_S(WARNING)
console.error()(JavaScript)
- notice - 正常だが重要な情報がある状態。
- info - 情報メッセージ。マップ先:
- APMF_LOG(…, INFO)
- LOG_F(INFO)
- LOG_S(INFO)
console.error()(JavaScript)
- debug - デバッグレベルのメッセージ。マップ先:
- APMF_LOG(…, DEBUG)
- LOG_F(DEBUG)
- LOG_S(DEBUG)
- emerg - システム利用不可。マップ先:
-
時刻の指定 - 時刻でログをフィルタリングするには、
--sinceまたは--untilを使用します。- キーワード:now、yesterday、today、tomorrow
-
時刻の形式:
%Y.%b.%dT%H:%M:%S (2024.12.21T16:00:59) %Y.%b.%dT%H:%M (2024.12.21T16:00) %Y.%m.%dT%H:%M:%S (2024.Dec.21T16:00:59) %Y.%m.%dT%H:%M (2024.Dec.21T16:00) %H:%M:%S (16:00:59) %H:%M (16:00)
-
--output-formatによる出力形式の指定:a. short_concise(デフォルト)
__REALTIME_TIMESTAMP _HOSTNAME SYSLOG_FACILITY.PRIORITY SYSLOG_IDENTIFIER[_PID]: TID MESSAGE例:
Nov 01 14:08:20.522382 amazon-8668d42631656f65 daemon.info smartboxd[1076]: 1076 I SmartBox:[run] watchdog service at 757064b. short_precise
__REALTIME_TIMESTAMP _HOSTNAME SYSLOG_IDENTIFIER[_PID]: MESSAGE例:
Nov 01 14:59:49.134671 firestick-83f109b314d1eb9e smartboxd[872]: I SmartBox:[LogViewer] Opened
Vegaパッケージの場合、LoggingCtlはSYSLOG_IDENTIFIERを使用するのではなく、_CMDLINEを使用して元のパッケージURLを表示します。アプリのログを最も確実にフィルタリングするには、-v (パッケージID)フィルターを使用します。
例:
System service log
Nov 01 14:59:49.134671 firestick-83f109b314d1eb9e smartboxd[872]: I SmartBox:[LogViewer] Opened
Vega package log
Nov 01 15:17:39.279675 firestick-83f109b314d1eb9e local0.debug com.amazon.dev.shell:dev_shell_app[2617]: 2 D base-monitor-loop:[BaseMonitoredAsyncLoop.cpp:53] Scheduling new idle work
vaultコマンド
smartboxdボールトシステムにアクセスして管理するには、loggingctl vaultコマンドを使用します。
$ loggingctl vault
ボールトコマンド - デバイスにアーカイブされているログデータとクラッシュデータを照会します。
使用方法:loggingctl vault [オプション]
オプション:
--flush アーティファクトの登録を強制します。
--upload <アップロードタイプ> ログ/クラッシュをアップロードします。
--purge <アーティファクトタイプ> アーティファクトを削除します。
--get-index <タイプ> <クライアント> クライアントインデックスを取得します。
--set-index <タイプ> <クライアント> <インデックス> クライアントインデックスを設定します。
--last-index <アーティファクトタイプ> 最後のインデックスを取得します。
--get-index-stats インデックスの統計を出力します。
--config パスの構成を表示します。
--storage [<アーティファクトタイプ>] ストレージの使用状況を表示します。
--enroll <タグ> <ファイル名> <データ> [<zero-content>] [<zero-meta>] 手動でアーティファクトを登録します。
--health-check システムの健全性を検証します。
--cat <タイプ> <インデックス> ボールトの内容を表示します。
--ls [<アーティファクトタイプ>] アーティファクトの一覧を表示します。
--json-dump <タイプ> メタデータをJSONとしてエクスポートします。
--size <タイプ> <インデックス> アーティファクトのサイズを表示します。
-h、--help ヘルプを表示します。
クラッシュレポート(ACRファイル)へのアクセス
デバイスに保存されているクラッシュレポートファイル(ACR)の一覧を表示したり、ファイルを取得したりするには、vaultコマンドを使用します。ACRファイルの概要とシンボリケート方法については、アプリのクラッシュレポートをシンボリケートする方法を参照してください。
使用可能なACRファイルの一覧表示
デバイス上のすべてのACRファイルを表示するには、次のコマンドを使用します。
$ loggingctl vault --ls SYSTEM_TOMBSTONE/acr
出力には、<インデックス>#crash_<タイムスタンプ>_<UID>_<GID>_<PID>_<シグナル>_<バイナリ>.acrという形式のファイル名が表示されます。
{
"artifacts": [
"91#crash_1776695212_30024_5000_1328_11_com_example_myapp.acr",
"90#crash_1776688049_30024_5000_2794_11_com_example_videoplayer.acr",
"18#crash_1776688021_106_106_1055_6_-usr-bin-location-service.acr",
"31#crash_1776688021_101_101_1219_6_-usr-bin-eventmgrd.acr",
...
],
"status": 0
}
#の前の番号は、そのファイルを取得するときに使用するインデックスです。ファイル名は次のフィールドで構成されます。
| フィールド | 説明 |
|---|---|
| インデックス | #の前の番号。--catでファイルを取得するときに使用します。 |
| タイムスタンプ | クラッシュが発生したときのUnixエポック。 |
| UID/GID | クラッシュしたプロセスのユーザーIDとグループID。 |
| PID | プロセスID。 |
| シグナル | シグナル番号(6=SIGABRT、11=SIGSEGV、3=SIGQUIT、4=SIGILL)。 |
| バイナリ | パッケージ名またはバイナリパス。 |
ACRメタデータの取得
すべてのACRファイルの詳細なメタデータをJSONとして取得するには、次のコマンドを使用します。
$ loggingctl vault --json-dump SYSTEM_TOMBSTONE/acr
{
"acr": {
"PathInVault": "/var/lib/data/ace/dropbox/vault/SYSTEM_TOMBSTONE/acr",
"artifacts": [
{
"age": "1776688374",
"filename": "91#crash_1776695212_30024_5000_1328_11_com_example_myapp.acr",
"filepath": "/var/lib/data/ace/dropbox/vault/SYSTEM_TOMBSTONE/acr/91#...",
"importance": "100",
"size": "731573"
}
],
"storage": "26057639"
},
"status": 0
}
最新のクラッシュインデックスの取得
$ loggingctl vault --last-index SYSTEM_TOMBSTONE
{
"index": 91,
"status": 0
}
ACRファイルのサイズの確認
$ loggingctl vault --size SYSTEM_TOMBSTONE <インデックス>
{
"index": 18,
"size": 127875,
"status": 0,
"tag": "SYSTEM_TOMBSTONE"
}
ACRファイルの取得
--catを使用して、アーティファクトタイプSYSTEM_TOMBSTONEとインデックス番号を指定します。
$ loggingctl vault --cat SYSTEM_TOMBSTONE <インデックス>
これにより、未加工のACRファイルの内容がstdoutに出力されます。
ACRファイルの保存
ACRファイルをデバイスのファイルシステムに保存するには、--catの出力をリダイレクトします。
$ loggingctl vault --cat SYSTEM_TOMBSTONE <インデックス> > crash_report.acr
例:クラッシュレポートの取得
# アプリのクラッシュレポートの一覧を表示します。
$ loggingctl vault --ls SYSTEM_TOMBSTONE/acr
{
"artifacts": [
"91#crash_1776692263_30024_5000_1296_11_com_example_myapp.acr",
"85#crash_1776688021_30024_5000_1219_6_com_example_myapp.acr",
"72#crash_1776687973_30024_5000_1055_11_com_example_myapp.acr"
],
"status": 0
}
# インデックスを指定して1つを保存します。
$ loggingctl vault --cat SYSTEM_TOMBSTONE 91 > crash_report.acr
ACRにアクセスするコマンドのリファレンス
| コマンド | アーティファクトタイプの引数 | 説明 |
|---|---|---|
--ls SYSTEM_TOMBSTONE/acr |
SYSTEM_TOMBSTONE/acr |
すべてのACRファイル名とインデックスの一覧を表示します。 |
--json-dump SYSTEM_TOMBSTONE/acr |
SYSTEM_TOMBSTONE/acr |
詳細なJSONメタデータを取得します。 |
--last-index SYSTEM_TOMBSTONE |
SYSTEM_TOMBSTONE |
最新のインデックスを取得します。 |
--size SYSTEM_TOMBSTONE <インデックス> |
SYSTEM_TOMBSTONE |
ダウンロード前にファイルサイズを確認します。 |
--cat SYSTEM_TOMBSTONE <インデックス> |
SYSTEM_TOMBSTONE |
ファイルの内容を取得します。 |
--lsコマンドと--json-dumpコマンドはSYSTEM_TOMBSTONE/acr(プロバイダーサフィックス付き)を使用しますが、--cat、--size、--last-indexはSYSTEM_TOMBSTONEのみを使用します。パーミッション構造
LoggingCtlには、デフォルトおよびコンポーネントシェルのパーミッションを通じたロールベースのアクセス制御が実装されています。デフォルトまたはコンポーネントシェルモードで操作する場合、次の情報にアクセスできます。
-
ログインデックスの追跡と管理を行うインデックス操作:
--last-index- 最新のログエントリのインデックスを表示します。--get-index-stats- 現在のログインデックスに関する統計情報を取得します。
-
--catを使用してログを表示するためのコンテンツアクセス:- コンポーネント固有のログ
- サイドロードされたパッケージのログ
- システムプロセス:stemd、lcm_service、inputd、関連サービス
-
次のコマンドを使用してアーティファクト情報を表示するリスト操作:
--ls- 使用可能なログを一覧表示します--json-dump- メタデータをエクスポートします--size- アーティファクトファイルのサイズをチェックします--storage- vaultストレージの合計または特定のアーティファクトストレージをチェックします
すべてのリスト操作は、main、system、SYSTEM_TOMBSTONE、ACR_REPORTで機能します。
アクセス拒否
許可されていない操作を試みたり、特権データにアクセスしようとしたりすると、拒否のレスポンスが返されます。
{
"error": "Insufficient permissions",
"status": -7
}
ログへのアクセス制限
LoggingCtlでは、次のログタイプへのアクセスは制限されます。
- サイドロードされたコンポーネントのログ
- daemonファシリティのログ
- システムコンポーネント:stemd、acr_core_dump、lcm_service、servicergrd、pkgmgrd、inputdを含む
関連トピック
Last updated: 2026年5月6日

