Logging API
Die Logging API wird verwendet, um Diagnoseinformationen aus ArmorLink Modules auszugeben.
Log-Nachrichten können lokal über Serial ausgegeben und – sofern von der ArmorLink App angefordert – als Remote Logs weitergeleitet werden.
Für den konzeptionellen Überblick siehe Remote Logging.
Basisbeispiel
ArmorLink.debug("Button pressed");
ArmorLink.info("Pairing completed");
ArmorLink.warn("Battery voltage low");
ArmorLink.error("DFPlayer not responding");
Lokales Serial Logging
Serial Logging wird über ArmorLinkOptions gesteuert.
ArmorLinkOptions options;
options.enableSerialLogging = true;
Wenn Serial Logging aktiviert ist, werden Log-Nachrichten lokal über die serielle Schnittstelle ausgegeben.
Remote Logging
Remote Logging leitet Log-Nachrichten an die ArmorLink App weiter.
Remote Logs werden nur übertragen, wenn sie von der ArmorLink App angefordert werden.
Der aktuelle Logging-Zustand und das aktive Log-Level werden von der ArmorLink App gesteuert.
Remote Logging arbeitet bedarfsgesteuert.
ArmorLink vermeidet unnötigen Log-Datenverkehr, solange die ArmorLink App keine Logs anfordert.
Log-Level
ArmorLink stellt vier Komfortmethoden bereit.
| Methode | Zweck |
|---|---|
debug(...) | Detaillierte Entwicklungsinformationen |
info(...) | Allgemeine Laufzeitinformationen |
warn(...) | Unerwartete Situationen |
error(...) | Fehler und kritische Probleme |
debug(...)
ArmorLink.debug("Button pressed");
Verwende debug(...) für detaillierte Entwicklungs- und Diagnoseinformationen.
info(...)
ArmorLink.info("Pairing completed");
Verwende info(...) für normale Laufzeitereignisse.
warn(...)
ArmorLink.warn("Battery voltage low");
Verwende warn(...) für unerwartete Situationen, die sichtbar sein sollten, den Betrieb jedoch nicht zwangsläufig verhindern.
error(...)
ArmorLink.error("DFPlayer not responding");
Verwende error(...) für Fehler oder kritische Probleme.
Logging aus Actions
module.actions()
.add("toggleFaceplate")
.label("Toggle Faceplate")
.command("Facemask", "toggle")
.onExecute([]{
ArmorLink.info("Toggle Faceplate action executed");
toggleFaceplate();
});
Weitere Informationen findest du unter Actions API.
Logging aus der Anwendungslogik
void btn1_handleClick()
{
ArmorLink.debug("BTN1 clicked");
ArmorLink.sendCommand(
"Helmet",
"Facemask",
"toggle"
);
}
Logging ist besonders hilfreich beim Debuggen lokaler Ereignisse wie Buttons, Sensoren oder Timern.
forceRemoteLogging
Remote Logging wird normalerweise von der ArmorLink App gesteuert.
Für Entwicklung und Fehlersuche kann es über ArmorLinkOptions erzwungen werden.
ArmorLinkOptions options;
options.forceRemoteLogging = true;
Für den normalen Betrieb sollte diese Option in der Regel deaktiviert bleiben.
remoteLogMinIntervalMs
Definiert das minimale Intervall zwischen Remote-Log-Nachrichten.
ArmorLinkOptions options;
options.remoteLogMinIntervalMs = 100;
Dies hilft dabei, übermäßigen Remote-Log-Verkehr zu vermeiden.
Warnungen und Fehler gelten als wichtige Diagnoseereignisse und werden nicht gedrosselt.
Dadurch wird sichergestellt, dass wichtige Probleme auch dann weitergeleitet werden, wenn Debug- oder Info-Logs begrenzt werden.
Logging vs. Telemetry
Logging
Diagnoseinformationen für Entwickler:
- Debug-Meldungen
- Warnungen
- Fehler
- Ablaufverfolgung
Telemetry
Strukturierte Laufzeitdaten:
- Batteriespannung
- Temperatur
- Sensorwerte
- Systemstatus
Weitere Informationen findest du unter Telemetry API.
Häufige Anwendungsfälle
Logging eignet sich für:
- Debugging von Pairing-Prozessen
- Überprüfung des Command-Routings
- Bestätigung der Action-Ausführung
- Analyse von Button-Handlern
- Diagnose von Kommunikationsproblemen
- Fehlersuche an eingebauten Modules ohne USB-Zugriff
Zusammenfassung
Die Logging API stellt Diagnoseinformationen für ArmorLink Modules bereit.
Häufig verwendete Methoden:
ArmorLink.debug(...)ArmorLink.info(...)ArmorLink.warn(...)ArmorLink.error(...)
Wichtige Optionen:
enableSerialLoggingforceRemoteLoggingremoteLogMinIntervalMs
Remote Logs werden nur übertragen, wenn sie von der ArmorLink App angefordert werden – außer Remote Logging wurde explizit erzwungen.