For the complete documentation index, see llms.txt. This page is also available as Markdown.

Log Collection and Submission

Purpose

Gathers device and third-party application logs (including OEM diagnostic logger output) and uploads them to Azure Blob Storage and/or Splunk, or hands them off to sibling BlueFletch apps, so a help-desk ticket can include real log data without physically retrieving the device.

Location

  • workers/SubmitLogsWorker.kt — orchestrates collection + upload.

  • data/collectors/CollectLogs.kt — gathers third-party app logs.

  • utils/RxLoggerHandler.kt — Zebra RxLogger control.

  • utils/HxLoggerHandler.kt — Honeywell HxLogger control.

  • receivers/RevertSystemLoggerAlarmReceiver.kt — auto-revert timer.

  • data/file/FileUploader.kt — Azure Blob upload.

Responsibilities

  • Zip collected log files (RxLogger/HxLogger capture files + registered third-party app logs).

  • Upload the zip to Splunk (HEC) and/or Azure Blob Storage, per loggingConnection/loggingContainer config.

  • If no host is configured, fall back to saving the zip to the device's Downloads folder.

  • Broadcast an upload-request intent to sibling BlueFletch apps (LogUploadReceiver) so they can attach their own logs.

  • Start/stop RxLogger (Zebra) or HxLogger (Honeywell) on request, and automatically revert (stop) logging after a scheduled window via AlarmManager (RevertSystemLoggerAlarmReceiver), so verbose OEM logging is never left running indefinitely.

Configuration

Configuration
Type
Default
Description

logUrl

String

-

Host URL used when submitting device application logs

loggingConnection

String

-

Azure Blob Storage connection string

loggingContainer

String

-

Azure Blob Storage container name

splunkApiLogPath

String

-

Splunk collector path for device log uploads (distinct from the event API path)

splunkLogAuth

String

-

Splunk auth token used specifically for log submission

rxLogger.loggingDuration

Integer

-

Minutes RxLogger/HxLogger stays enabled before auto-revert

submitLogs.enabled

Boolean

false

Enables log-file submission

submitLogs.alarmEnabled

Boolean

false

Enables scheduled (alarm-driven) log uploads

submitLogs.sendOnBoot

Boolean

false

Upload logs on device boot

submitLogs.multipleHoursOfDayToSend

String

-

Comma-separated hours (0-23, device local time) to run scheduled uploads

submitLogs.directories[]

Array

-

Per-app log file globs to collect: application, location, files (regex), optional extractor (currently only rxloggercsv is supported)

Error Handling

Scenario
Expected behavior
Recovery

No logUrl/Azure/Splunk log destination configured

Zip saved to Downloads folder (SavedLocally)

User/technician manually retrieves the file

Network unavailable during upload

NetworkFailure result

Re-run submission when connectivity returns; no automatic background retry was found for this specific pipeline (unlike the generic event queue)

HTTP error from destination HttpError result Check destination credentials/URL

HttpError result

Check destination credentials/URL

Logging and Troubleshooting

Problem: Log submission reports SavedLocally unexpectedly.

Check:

  1. Are logUrl, loggingConnection/loggingContainer, or the Splunk log fields (splunkApiLogPath, splunkLogAuth) populated in the effective config?

  2. If none are set, this is expected behavior, not a bug — the zip will be in the device Downloads folder.

Problem: RxLogger/HxLogger doesn't stop.

Check:

  1. Is SCHEDULE_EXACT_ALARM permission granted (required for RevertSystemLoggerAlarmReceiver)?

  2. Was the logging duration (rxLogger.loggingDuration) configured, or left at a default that's longer than expected?

Last updated