as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

Loggingctlを使用したシステムログの管理

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                       ヘルプを表示します。

構成のリセット

ログ構成をデフォルトにリセットする方法は次のとおりです。

  1. レート制限: レートをデフォルト値(1000)に戻します。

    loggingctl config --set-rate <プロセス> 1000
    
  2. ログレベル: レベルをデフォルト(info)に戻します。

    loggingctl config --set-level <プロセス> info
    
  3. システム全体への変更の適用(レートまたはレベルの変更後に必要): ロギングサービスを再起動します。

    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を押します。

アプリのログが表示されない場合:

LoggingCtlは、セッションの開始前にインストールされていたアプリのみを検出します。LoggingCtlの起動後にアプリをインストールした場合は、アプリを再インストールし、セッションを再起動してください。

  1. アプリを手動でインストールします。

    vega exec vda shell vpm install <VPKGのパス>
    
  2. LoggingCtlを起動します。

    クリップボードにコピーしました。

    vega exec vda shell 
    loggingctl log -f
    
  3. 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レベルにマッピングします。

サポートされている引数キーワード

--priority--facility--since--until--output-formatの各コマンドは、特定のキーワードを受け取ります。

  1. 優先度レベル - 優先度レベルを設定してログの表示を制御するには、--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)
  2. 時刻の指定 - 時刻でログをフィルタリングするには、--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
      
  3. --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 757064
    

    b. 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 ファイルの内容を取得します。

パーミッション構造

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日