Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Get Started
Design and Develop
Publish
Reference
Support
Skip to main content
Logging Control CLI (LoggingCtl) is a command-line interface (CLI) tool for managing, viewing, and testing logging data on Vega devices. It also provides access to crash reports (ACR files) stored on the device. To access the loggingctl command, you must enter the Vega device shell using the vega exec vda shell command. This tool helps you:
  • Debug app issues through real-time log monitoring.
  • Configure logging levels and rates for different processes.
  • Access and analyze stored logs and crash reports.
  • Manage log storage and retention.
  • Investigate system issues through diagnostic data.

Start or restart LoggingCtl after installing new apps

LoggingCtl determines log permissions based on apps installed when the session starts. Apps installed after LoggingCtl begins won’t show logs until you restart the LoggingCtl session.

Basic usage

Configuration commands

Use loggingctl config commands to control logging behavior for your apps.

Reset configuration

To reset logging configuration to defaults:
  1. For rate limits: Restore the default rate with --reset. Use --reset rather than setting the value by hand, because an explicit value leaves an override in place while --reset clears it:
    The default rate is 300 lines per second, per process. Valid rates are 1 to 60000 inclusive. loggingctl rejects 0 and any value above 60000.
  1. For log levels: Set the level back to the default (info on release builds, debug on debug builds):

Log budget and suppression

Each process has a log budget. When your app emits log lines faster than the budget allows, the logging library suppresses the excess: those lines are discarded inside your process and never reach the log backend. Suppression is silent to your code. The logging call returns normally whether the line was recorded or dropped, so a log with a gap looks the same as a log where nothing happened. This behavior is most noticeable on debug builds, which log more and reach the budget sooner. The default budget is 300 lines per second, per process. The minimum level is info on release builds and debug on debug builds. Budgets are independent for each combination of log tag and severity level. A chatty debug logger does not consume the budget of an info logger, and the other way around. A clean error stream does not mean nothing was dropped at info. Repeated over-emission escalates the suppression window (for example, 1, 2, 4, 16, and up to 256 seconds), and the window relaxes back one step per quiet period. A 256-second window means that tag and level have been dark for more than four minutes, so reduce your log volume or raise your budget before you draw conclusions from that log.

Detect suppression

The logging library writes a warning-level message under your app’s own identity when it starts suppressing, and another when it stops. The message appears in two forms. Process-wide, reporting the level:
Per tag, not reporting the level:
Search for both wordings, and match case-insensitively on suppress, because the exact casing can vary between releases. The counts differ by design: the first counts per level across the whole process, the second counts per tag across all levels. To find these messages, filter the warning stream for your app and scan for suppression:
When you read the counts:
  • The count appears only on the message that reports suppression ending. While suppression is active, no count is reported.
  • The counter resets after each episode. Three episodes of 40 lines report three separate [40]s, not [120].
  • If your process exits while suppression is active, the ending message never arrives and the count is lost.
  • These warnings are not themselves rate limited, so the budget cannot suppress them.

Reduce dropped lines

If you are being suppressed, reduce volume first: log one line per state change instead of per iteration, and aggregate counters into a periodic summary. If you still need more throughput, raise the rate for the process:
Reset to the default when you are done:

Log commands

Use loggingctl log commands to view logs from systemd-journald memory in real-time or from stored data. loggingctl log commands only show logs from the current session by default. To see older logs, use the --boot option on Vega Virtual Device. For Fire TV Stick, view previous logs using loggingctl vault commands.
For React Native and JavaScript developers, use the package ID filter (-v) to view logs from your specific app:
To stop following logs, press Ctrl+C. If logs don’t appear for your app: LoggingCtl only detects apps installed before the session starts. If you installed your app after starting LoggingCtl, reinstall the app and restart the session:
  1. Install the app manually:
  2. Start LoggingCtl:
  3. Start the app using vmsgr send:

JavaScript logging considerations

When using JavaScript logging in your Vega apps: Recommended approach: Use console.* methods for proper log level filtering:

Supported argument keywords

The --priority, --facility, --since, --until, and --output-format commands accept specific keywords:
  1. Priority levels - Use --priority to control log visibility by setting a priority level. This filters log output to show only the specified priority level, helping you focus on logs from your component or other processes.
    • emerg - System is unusable, maps to:
      • APMF_LOG(…, FATAL)
    • alert - Action must be taken immediately
    • crit - Critical conditions, maps to:
      • LOG_F(FATAL)
      • LOG_S(FATAL)
    • err - Error conditions, maps to:
      • APMF_LOG(…, ERROR)
      • LOG_F(ERROR)
      • LOG_S(ERROR)
      • console.error() (JavaScript)
    • warning - Warning conditions, maps to:
      • APMF_LOG(…, WARNING)
      • LOG_F(WARNING)
      • LOG_S(WARNING)
      • console.warn() (JavaScript)
    • notice - Normal but significant conditions
    • info - Informational messages, maps to:
      • APMF_LOG(…, INFO)
      • LOG_F(INFO)
      • LOG_S(INFO)
      • console.log() (JavaScript)
    • debug - Debug-level messages, maps to:
      • APMF_LOG(…, DEBUG)
      • LOG_F(DEBUG)
      • LOG_S(DEBUG)
  2. Time specifications - Filter logs by time using --since or --until:
    • Keywords: now, yesterday, today, and tomorrow
    • Time format:
  3. Output format using --output-format: a. short_concise (Default)
    Example:
    b. short_precise
    Example:
For Vega packages, LoggingCtl uses _CMDLINE instead of SYSLOG_IDENTIFIER to display the package URL origin. Use the -v (package ID) filter for the most reliable filtering of your app’s logs. Example:

Vault commands

Use loggingctl vault commands to manage and access the smartboxd vault system.

Access crash reports (ACR files)

Use vault commands to list and retrieve crash report files (ACR) stored on the device. For background on ACR files and how to symbolicate them, see Symbolicate App Crash Reports.

List available ACR files

To see all ACR files on the device:
Output shows filenames in the format :
The number before # is the index used to retrieve the file. The filename encodes:

Get ACR metadata

To get detailed metadata for all ACR files as JSON:

Get the most recent crash index

Check ACR file size

Retrieve an ACR file

Use --cat with the artifact type SYSTEM_TOMBSTONE and the index number:
This outputs the raw ACR file content to stdout.

Save an ACR file

To save an ACR file to the device filesystem, redirect the output of --cat:

Example: retrieve a crash report

Command reference for ACR access

Permission structure

LoggingCtl implements role-based access control through default and component shell permissions. When operating in default or component shell mode, you can access:
  • Index operations to track and manage log indices:
    • --last-index - View the most recent log entry index
    • --get-index-stats - Get statistics about current log indices
  • Content access to view logs using --cat for:
    • Your component-specific logs
    • Sideloaded package logs
    • System processes: stemd, lcm_service, inputd, and related services
  • Listing operations to view artifact information using the following commands:
    • --ls - Lists available logs
    • --json-dump - Exports metadata
    • --size - Checks artifact file sizes
    • --storage - Checks total vault storage or specific artifact storage
All listing operations work with main, system, SYSTEM_TOMBSTONE, and ACR_REPORT.

Access denied

When you attempt unauthorized operations or try to access privileged data, you see a denied response:

Log access restrictions

LoggingCtl limits access to the following log types:
  • Sideloaded component logs
  • Daemon facility logs
  • System components, including stemd, acr_core_dump, lcm_service, servicergrd, pkgmgrd, and inputd

Last modified on September 11, 2026