Zum Hauptinhalt springen

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.

tipp

Remote Logging arbeitet bedarfsgesteuert.

ArmorLink vermeidet unnötigen Log-Datenverkehr, solange die ArmorLink App keine Logs anfordert.

Log-Level

ArmorLink stellt vier Komfortmethoden bereit.

MethodeZweck
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.

info

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:

  • enableSerialLogging
  • forceRemoteLogging
  • remoteLogMinIntervalMs

Remote Logs werden nur übertragen, wenn sie von der ArmorLink App angefordert werden – außer Remote Logging wurde explizit erzwungen.