as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

使用Loggingctl管理系统日志

使用Loggingctl管理系统日志

日志记录控制CLI (LoggingCtl) 是一个命令行界面 (CLI) 工具,用于管理、查看和测试Vega设备上的日志记录数据。要访问loggingctl命令,您必须使用kepler exec vda shell命令进入Vega设备的Shell。

此工具可以帮助您进行以下操作:

  • 通过实时日志监控调试应用问题。
  • 为不同的进程配置日志记录级别和速率。
  • 访问和分析存储的日志和崩溃报告。
  • 管理日志存储和保留。
  • 通过诊断数据调查系统问题。

基本用法

(注意:界面显示内容均为英文,此处中文译文仅供参考)

$ loggingctl
Logging CTL

用法:loggingctl <命令>

命令:
  config  配置命令 - 编辑日志记录系统优先级和速率限制。
  log     日志查看命令 - 查询设备上生成的运行时日志。
  vault   Vault命令 - 查询在设备上存档的日志记录和崩溃数据。
  test    测试命令 - 用于系统测试的命令。仅限内部使用
  help    输出此消息,也可以是给定子命令的帮助信息。

选项:
  -h--help     输出帮助信息
  -V--version  输出版本

配置命令

使用配置命令控制应用的日志记录行为。

$ 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
    

日志命令

帮助您实时查看来自systemd-journald的内存日志,或从存储数据中查看日志。

默认情况下,loggingctl log命令仅显示当前会话的日志。要查看较早前的日志,请使用Vega虚拟设备上的--boot选项。对于Fire TV Stick,使用loggingctl vault命令查看之前的日志。

$ loggingctl log
日志查看命令 - 查询设备上生成的运行时日志

用法:loggingctl log [选项]

选项:
-f, --follow                            关注正在记录的日志
-p, --priority <优先级>               按优先级筛选仅筛选给定优先级。可以定义多次。
-k, --kernel                            仅筛选内核日志未实现
-t, --identity <标识符>               按SYSLOG_IDENTIFIER筛选。可以定义多次。
-a, --tag <标记>                         按日志标记字符串筛选。可以定义多次。
-b, --boot                       <启动> 按启动ID筛选。可以定义多次。
-P, --pid <PID>                         按PID筛选。可以定义多次。
-T, --tid <TID>                         按TID筛选。可以定义多次。
-F, --facility <设施>               按SYSLOG_FACILITY筛选。可以定义多次。
-S, --since <起始时间>                     自给定时间起筛选。只能定义一次。
-U, --until <截止时间>                     按截至给定时间进行筛选。只能定义一次。
-o, --output-format <输出格式>     指定输出格式,"short_precise""short_concise"默认 无效的字符串会将输出设置为默认值。只能定义一次。
-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

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使用_CMDLINE而不是SYSLOG_IDENTIFIER来显示程序包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 vault系统。

$ loggingctl vault
vault命令 - 查询设备上存档的日志记录和崩溃数据

用法:loggingctl vault [选项]

选项:
  --flush                                                           强制工件注册
  --upload <上传类型>                                             上传日志/崩溃
  --purge <工件类型>                                            移除工件
  --get-index <类型> <客户端>                                       获取客户端索引
  --set-index <类型> <客户端> <索引>                               设置客户端索引
  --last-index <工件类型>                                       获取最后一个索引
  --get-index-stats                          输出索引统计信息
  --config                                        显示路径配置
  --storage [<工件类型>]                                        查看存储空间使用情况
  --enroll <标记> <文件名称> <数据> [<零内容>] [<零元数据>]   手动工件注册
  --health-check                                                    系统运行状况验证
  --cat <类型> <索引>                                              查看vault内容
  --ls [<工件类型>]                                             列出工件
  --json-dump <类型>                                                将元数据导出为JSON
  --size <类型> <索引>                                             显示工件大小
  -h, --help                                                        输出帮助信息

权限结构

LoggingCtl通过默认权限和组件shell权限实现基于角色的访问控制。在默认模式或组件shell模式下运行时,您可以访问一下信息:

  1. 索引操作 - 跟踪和管理日志索引:

    • --last-index - 查看最新的日志条目索引
    • --get-index-stats - 获取有关当前日志索引的统计信息
  2. 内容访问 - 对以下项使用--cat查看日志:

    • 您的特定于组件的日志
    • 侧载的程序包日志
    • 系统进程:stemd、lcm_service、inputd和相关服务
  3. 信息列举操作 - 使用以下命令查看工件信息:

    • --ls - 列出可用日志
    • --json-dump - 导出元数据
    • --size - 检查工件文件大小
    • --storage - 检查保管库总存储空间或特定工件存储空间

所有列举操作均适用于main、system、SYSTEM_TOMBSTONE和ACR_REPORT。

访问被拒绝

当您尝试未经授权的操作或尝试访问特权数据时,您会看到拒绝响应:

已复制到剪贴板。

{
    "error": "Insufficient permissions",
    "status": -7
}

日志访问限制

LoggingCtl限制对以下日志类型的访问:

  • 侧载的组件日志
  • 守护程序设施日志
  • 系统组件包括stemd、acr_core_dump、lcm_service、servicergrd、pkgmgrd和inputd。

Last updated: 2025年10月2日