Remote Logging
Remote Logging allows ArmorLink modules to forward diagnostic information to the ArmorLink App through the Gateway.
It is designed to simplify development, troubleshooting and field diagnostics without requiring a USB cable or serial monitor.
Why Remote Logging?
In a modular ArmorLink setup, many ESP32 modules may be hidden inside armor parts, props or wearable systems.
Remote Logging allows you to inspect runtime behavior directly from the ArmorLink App.
Examples:
- Debugging button presses
- Monitoring sensor activity
- Investigating communication issues
- Detecting configuration problems
- Capturing runtime errors
Logging Flow
Remote logs are always routed through the Gateway.
Module
|
v
Gateway
|
v
ArmorLink App
The Gateway acts as a transport layer and forwards log messages to connected App clients.
Log Levels
ArmorLink provides four log levels.
| Level | Purpose |
|---|---|
| Debug | Detailed developer information |
| Info | General runtime information |
| Warn | Potential problems |
| Error | Critical failures |
Examples:
ArmorLink.debug("Button pressed");
ArmorLink.info("Missile bay opened");
ArmorLink.warn("Battery voltage low");
ArmorLink.error("DFPlayer not detected");
Enabling Remote Logging
Remote Logging is disabled until requested by the ArmorLink App.
When enabled, ArmorLink begins forwarding log messages that match the currently selected log level.
App requests logging
|
v
Gateway enables logging
|
v
Module starts forwarding logs
This prevents unnecessary ESP-NOW traffic during normal operation.
Log Level Filtering
The ArmorLink App can control which log levels should be forwarded.
For example:
Remote Level = INFO
Results:
DEBUG -> ignored
INFO -> forwarded
WARN -> forwarded
ERROR -> forwarded
This allows developers to reduce log traffic while still receiving important information.
Warning and Error Messages
Warning and Error messages are considered important diagnostic events and are not rate-limited.
Even when large numbers of Debug or Info messages are being suppressed, Warnings and Errors are always treated as high-priority diagnostic information.
Recommended usage:
ArmorLink.warn("Battery below 20%");
ArmorLink.error("Servo initialization failed");
Remote Logging vs Serial Logging
Remote Logging and Serial Logging are independent.
Serial Logging
options.enableSerialLogging = true;
Messages are written to the serial monitor.
Remote Logging
Messages are forwarded through the ArmorLink network and displayed in the ArmorLink App.
Both systems can be enabled simultaneously.
Best Practices
Use Debug for Development
ArmorLink.debug("Received command");
Useful while developing and testing.
Use Info for State Changes
ArmorLink.info("Faceplate opened");
Useful for tracking normal operation.
Use Warn for Recoverable Problems
ArmorLink.warn("Battery voltage low");
The module continues operating but attention may be required.
Use Error for Failures
ArmorLink.error("DFPlayer initialization failed");
Use Error messages when functionality is unavailable or a critical fault occurs.
Example
void setup()
{
if (!dfplayer.begin(serial))
{
ArmorLink.error("DFPlayer initialization failed");
return;
}
ArmorLink.info("DFPlayer ready");
}
void handleBattery(float voltage)
{
if (voltage < 3.5f)
{
ArmorLink.warn("Battery voltage low");
}
}
Summary
Remote Logging provides wireless diagnostic information for ArmorLink systems.
Remote logs:
- Are routed through the Gateway
- Are displayed in the ArmorLink App
- Support Debug, Info, Warn and Error levels
- Can be filtered by log level
- Help diagnose systems without a serial connection
Warning and Error messages are treated as important diagnostic events and should be used whenever abnormal conditions occur.