使用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 输出帮助信息
重置配置
要将日志配置重置为默认值,请执行以下操作:
-
对于速率限制: 将速率设置回默认值 (1000):
loggingctl config --set-rate <进程> 1000警告: 使用--set-rate时,如果将速率提高到300个日志/秒以上,可能会由于系统负载增加而导致日志丢失。 -
对于日志级别: 将级别设置回默认值 (info):
loggingctl config --set-level <进程> info -
要在系统范围内应用更改,请执行以下操作: 重新启动日志服务:
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
-v一起使用的程序包ID与配置命令中使用的标识符相同(<PROCESS>参数)。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使用_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模式下运行时,您可以访问一下信息:
-
索引操作 - 跟踪和管理日志索引:
--last-index- 查看最新的日志条目索引--get-index-stats- 获取有关当前日志索引的统计信息
-
内容访问 - 对以下项使用
--cat查看日志:- 您的特定于组件的日志
- 侧载的程序包日志
- 系统进程:stemd、lcm_service、inputd和相关服务
-
信息列举操作 - 使用以下命令查看工件信息:
--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日

