Logging
Für eine benutzerorientierte Übersicht (CLI + Control UI + Konfiguration) siehe /logging.
OpenClaw hat zwei Log-”Oberflächen”:
- Konsolenausgabe (was du im Terminal / der Debug-UI siehst).
- Datei-Logs (JSON-Zeilen), geschrieben vom Gateway-Logger.
Dateibasierter Logger
- Standard-Rollierende-Logdatei liegt unter
/tmp/openclaw/(eine Datei pro Tag):openclaw-YYYY-MM-DD.log- Das Datum verwendet die lokale Zeitzone des Gateway-Hosts.
- Logdatei-Pfad und -Level können über
~/.openclaw/openclaw.jsonkonfiguriert werden:logging.filelogging.level
Das Dateiformat ist ein JSON-Objekt pro Zeile.
Der Control-UI-Logs-Tab liest diese Datei per Tail über das Gateway (logs.tail).
Die CLI kann das Gleiche:
openclaw logs --follow
Verbose vs. Log-Levels
- Datei-Logs werden ausschließlich durch
logging.levelgesteuert. --verbosebeeinflusst nur die Konsolen-Verbosität (und den WS-Log-Stil); es erhöht nicht das Datei-Log-Level.- Um Verbose-only-Details in Datei-Logs zu erfassen, setze
logging.levelaufdebugodertrace.
Konsolen-Capture
Die CLI fängt console.log/info/warn/error/debug/trace ab und schreibt sie in Datei-Logs,
während sie weiterhin auf stdout/stderr ausgegeben werden.
Du kannst die Konsolen-Verbosität unabhängig anpassen über:
logging.consoleLevel(Standardinfo)logging.consoleStyle(pretty|compact|json)
Tool-Summary-Redaktion
Ausführliche Tool-Summaries (z. B. 🛠️ Exec: ...) können sensible Token maskieren, bevor sie den
Konsolen-Stream erreichen. Das betrifft nur Tools und ändert keine Datei-Logs.
logging.redactSensitive:off|tools(Standard:tools)logging.redactPatterns: Array von Regex-Strings (überschreibt Standards)- Verwende rohe Regex-Strings (auto
gi), oder/pattern/flagsfür benutzerdefinierte Flags. - Treffer werden maskiert, indem die ersten 6 + letzten 4 Zeichen beibehalten werden (Länge >= 18), ansonsten
***. - Die Standards decken gängige Schlüsselzuweisungen, CLI-Flags, JSON-Felder, Bearer-Header, PEM-Blöcke und populäre Token-Präfixe ab.
- Verwende rohe Regex-Strings (auto
Gateway-WebSocket-Logs
Das Gateway gibt WebSocket-Protokoll-Logs in zwei Modi aus:
- Normaler Modus (kein
--verbose): Nur “interessante” RPC-Ergebnisse werden ausgegeben:- Fehler (
ok=false) - Langsame Aufrufe (Standard-Schwelle:
>= 50ms) - Parse-Fehler
- Fehler (
- Verbose-Modus (
--verbose): Gibt den gesamten WS-Request/Response-Verkehr aus.
WS-Log-Stil
openclaw gateway unterstützt einen Gateway-spezifischen Stilschalter:
--ws-log auto(Standard): Normalmodus ist optimiert; Verbose-Modus verwendet kompakte Ausgabe--ws-log compact: Kompakte Ausgabe (gepaarter Request/Response) im Verbose-Modus--ws-log full: Volle Ausgabe pro Frame im Verbose-Modus--compact: Alias für--ws-log compact
Beispiele:
# optimiert (nur Fehler/langsam)
openclaw gateway
# gesamten WS-Verkehr anzeigen (gepaart)
openclaw gateway --verbose --ws-log compact
# gesamten WS-Verkehr anzeigen (volle Meta)
openclaw gateway --verbose --ws-log full
Konsolenformatierung (Subsystem-Logging)
Der Konsolenformatter ist TTY-bewusst und gibt konsistente, präfixierte Zeilen aus. Subsystem-Logger halten die Ausgabe gruppiert und übersichtlich.
Verhalten:
- Subsystem-Präfixe in jeder Zeile (z. B.
[gateway],[canvas],[tailscale]) - Subsystem-Farben (stabil pro Subsystem) plus Level-Einfärbung
- Farbe wenn Ausgabe ein TTY ist oder die Umgebung nach einem Rich-Terminal aussieht (
TERM/COLORTERM/TERM_PROGRAM), respektiertNO_COLOR - Gekürzte Subsystem-Präfixe: Entfernt führendes
gateway/+channels/, behält letzte 2 Segmente (z. B.whatsapp/outbound) - Sub-Logger nach Subsystem (Auto-Präfix + strukturiertes Feld
{ subsystem }) logRaw()für QR-/UX-Ausgabe (kein Präfix, keine Formatierung)- Konsolen-Stile (z. B.
pretty | compact | json) - Konsolen-Log-Level getrennt vom Datei-Log-Level (Datei behält volle Details, wenn
logging.levelaufdebug/tracegesetzt ist) - WhatsApp-Nachrichteninhalte werden auf
debug-Level geloggt (verwende--verboseum sie zu sehen)
Das hält bestehende Datei-Logs stabil und macht die interaktive Ausgabe übersichtlich.