Skip to content

Logging

For a user-facing overview (CLI + Control UI + config), see /docs/logging.

OpenClaw has two log “surfaces”:

  • Console output (what you see in the terminal / Debug UI).
  • File logs (JSON lines) written by the gateway logger.
  • Default rolling log file is under /tmp/openclaw/ (one file per day): openclaw-YYYY-MM-DD.log
    • Date uses the gateway host’s local timezone.
  • The log file path and level can be configured via ~/.openclaw/openclaw.json:
    • logging.file
    • logging.level

The file format is one JSON object per line.

The Control UI Logs tab tails this file via the gateway (logs.tail). CLI can do the same:

Terminal window
openclaw logs --follow

Verbose vs. log levels

  • File logs are controlled exclusively by logging.level.
  • --verbose only affects console verbosity (and WS log style); it does not raise the file log level.
  • To capture verbose-only details in file logs, set logging.level to debug or trace.

The CLI captures console.log/info/warn/error/debug/trace and writes them to file logs, while still printing to stdout/stderr.

You can tune console verbosity independently via:

  • logging.consoleLevel (default info)
  • logging.consoleStyle (pretty | compact | json)

Verbose tool summaries (e.g. 🛠️ Exec: ...) can mask sensitive tokens before they hit the console stream. This is tools-only and does not alter file logs.

  • logging.redactSensitive: off | tools (default: tools)
  • logging.redactPatterns: array of regex strings (overrides defaults)
    • Use raw regex strings (auto gi), or /pattern/flags if you need custom flags.
    • Matches are masked by keeping the first 6 + last 4 chars (length >= 18), otherwise ***.
    • Defaults cover common key assignments, CLI flags, JSON fields, bearer headers, PEM blocks, and popular token prefixes.

The gateway prints WebSocket protocol logs in two modes:

  • Normal mode (no --verbose): only “interesting” RPC results are printed:
    • errors (ok=false)
    • slow calls (default threshold: >= 50ms)
    • parse errors
  • Verbose mode (--verbose): prints all WS request/response traffic.

openclaw gateway supports a per-gateway style switch:

  • --ws-log auto (default): normal mode is optimized; verbose mode uses compact output
  • --ws-log compact: compact output (paired request/response) when verbose
  • --ws-log full: full per-frame output when verbose
  • --compact: alias for --ws-log compact

Examples:

Terminal window
# optimized (only errors/slow)
openclaw gateway
# show all WS traffic (paired)
openclaw gateway --verbose --ws-log compact
# show all WS traffic (full meta)
openclaw gateway --verbose --ws-log full

The console formatter is TTY-aware and prints consistent, prefixed lines. Subsystem loggers keep output grouped and scannable.