Zum Inhalt springen

OpenClaw Logging: So behältst du den Durchblick

Irgendetwas funktioniert nicht und du weißt nicht, warum. Wir alle kennen diesen Moment, in dem man die Log-Datei beobachtet und plötzlich die eine Fehlermeldung sieht, die alles erklärt. Logs sind dein erster Anlaufpunkt, wenn es Probleme gibt.

OpenClaw schreibt Logs an zwei Stellen: in eine JSON-Datei für die automatisierte Auswertung und in die Console für dich. Hier erfährst du, wie du beide Quellen nutzt.

  • OpenClaw Gateway
  • Zugriff auf dein Terminal
  • Eine gültige Konfigurationsdatei
  • Installiertes OpenClaw CLI

Standardmäßig schreibt das Gateway eine rolling log file unter diesem Pfad:

/tmp/openclaw/openclaw-YYYY-MM-DD.log

Du kannst das in deiner Config anpassen:

{
logging: {
file: "/custom/path/openclaw.log"
}
}

Nutze den CLI-Befehl für einen Live-View:

Terminal-Fenster
openclaw logs --follow

Output modes:

  • TTY: Formatiert, farbig und strukturiert
  • Non-TTY: Plain text
  • --json: Line-delimited JSON
  • --plain: Erzwingt Plain text
  • --no-color: Deaktiviert ANSI-Farben

Der Logs Tab in der Control UI zeigt dir dieselben Daten. Starte sie mit openclaw control. Wenn du nur Logs für bestimmte Channels sehen willst, hilft dieser Befehl:

Terminal-Fenster
openclaw channels logs --channel whatsapp

Du kannst die Ausführlichkeit der Logs in der Config steuern:

{
logging: {
level: "info", // Level für die Datei
consoleLevel: "info", // Level für die Console
consoleStyle: "pretty" // pretty | compact | json
}
}

Verfügbare Levels sind: trace, debug, info, warn, error. Das --verbose Flag beeinflusst nur die Console, nicht die Log-Datei.

Um sensible Daten in der Console zu schützen, kannst du Redaction aktivieren. Das betrifft nur die Console – in der Log-Datei bleiben die Daten ungeschwärzt.

{
logging: {
redactSensitive: "tools", // off | tools
redactPatterns: ["sk-.*"] // Eigene Regex-Patterns
}
}

Für das Monitoring in Production kannst du Metriken und Traces an deinen Observability-Stack senden.

{
diagnostics: {
enabled: true
}
}
{
plugins: {
allow: ["diagnostics-otel"],
entries: {
"diagnostics-otel": { enabled: true }
}
},
diagnostics: {
enabled: true,
otel: {
enabled: true,
endpoint: "http://otel-collector:4318",
serviceName: "openclaw-gateway",
traces: true,
metrics: true,
logs: true
}
}
}

Metrics:

  • openclaw.tokens — Token-Verbrauch
  • openclaw.cost.usd — Kosten-Tracking
  • openclaw.run.duration_ms — Dauer der Ausführung
  • openclaw.webhook.received — Webhook-Aktivität
  • openclaw.message.processed — Nachrichtendurchsatz

Traces:

  • openclaw.model.usage — Spans für Model Completions
  • openclaw.webhook.processed — Webhook-Verarbeitung
  • openclaw.message.processed — Nachrichten-Handling

Wenn du gezielt Logs für bestimmte Bereiche brauchst, ohne das globale Level zu ändern, nutze Flags:

{
diagnostics: {
flags: ["telegram.http", "telegram.payload"]
}
}

Oder via Environment Variable:

Terminal-Fenster
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload

Wildcards wie telegram.* oder * funktionieren ebenfalls.

Im --json Modus gibt die CLI typisierte Objekte aus:

TypeBeschreibung
metaStream-Metadaten (Datei, Cursor, Größe)
logParsed log entry
noticeHinweise zu Rotation oder Kürzungen
rawUngefilterte Log-Zeile
EventBeschreibung
model.usageTokens, Kosten, Dauer, Kontext, Provider/Model/Channel, Session IDs
EventBeschreibung
webhook.receivedWebhook-Eingang pro Channel
webhook.processedWebhook erfolgreich verarbeitet + Dauer
webhook.errorFehler im Webhook-Handler
message.queuedNachricht in Warteschlange eingereiht
message.processedErgebnis + Dauer + optionaler Fehler
EventBeschreibung
queue.lane.enqueueEnqueue in Queue Lane + Tiefe
queue.lane.dequeueDequeue aus Queue Lane + Wartezeit
session.stateSession Status-Übergang + Grund
session.stuckWarnung bei hängender Session + Alter
run.attemptMetadaten zu Retries
diagnostic.heartbeatAggregierte Counter (Webhooks/Queue/Session)
MetricTypeAttribute
openclaw.tokensCountertype, channel, provider, model
openclaw.cost.usdCounterchannel, provider, model
openclaw.run.duration_msHistogramchannel, provider, model
openclaw.context.tokensHistogramcontext, channel, provider, model
MetricTypeAttribute
openclaw.webhook.receivedCounterchannel, webhook
openclaw.webhook.errorCounterchannel, webhook
openclaw.webhook.duration_msHistogramchannel, webhook
openclaw.message.queuedCounterchannel, source
openclaw.message.processedCounterchannel, outcome
openclaw.message.duration_msHistogramchannel, outcome
SpanKey Attribute
openclaw.model.usagechannel, provider, model, sessionKey, sessionId, tokens.*
openclaw.webhook.processedchannel, webhook, chatId
openclaw.webhook.errorchannel, webhook, chatId, error
openclaw.message.processedchannel, outcome, chatId, messageId, sessionKey, sessionId, reason
  • OTLP/HTTP Endpunkte via diagnostics.otel.endpoint oder OTEL_EXPORTER_OTLP_ENDPOINT
  • Wenn der Endpunkt /v1/traces, /v1/metrics oder /v1/logs enthält, wird er direkt genutzt
  • Aktuell wird nur http/protobuf unterstützt (grpc wird ignoriert)
  • OTLP Logs nutzen dieselben strukturierten Daten wie logging.file
  • Console Redaction gilt nicht für OTLP Logs

Nutze diesen Befehl zur Diagnose:

Terminal-Fenster
openclaw doctor

Prüfe, ob das Gateway läuft und ob logging.file auf den korrekten Pfad zeigt.

Setze das logging.level auf debug oder trace:

{
logging: {
level: "debug"
}
}

Du kommst nicht weiter? Unser AI Setup Assistant hilft dir dabei, deine Logs zu interpretieren.

OpenClaw

OpenClaw Expert

Noch festgefahren?

Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.