Логирование

Для ориентированного на пользователя обзора (CLI + Control UI + конфигурация), см. /logging.

OpenClaw имеет две "поверхности" логов:

  • Вывод консоли (что вы видите в терминале / Debug UI).
  • Файловые журналы (JSON-строки), записываемые логгером шлюза.

Файловый логгер

  • Файл журнала с ротацией по умолчанию находится под /tmp/openclaw/ (один файл в день): openclaw-YYYY-MM-DD.log
    • Дата использует локальный часовой пояс хоста шлюза.
  • Путь к файлу журнала и уровень можно настроить через ~/.openclaw/openclaw.json:
    • logging.file
    • logging.level

Формат файла — один объект JSON на строку.

Вкладка «Журналы» Control UI отслеживает этот файл через шлюз (logs.tail). CLI может делать то же самое:

openclaw logs --follow

Verbose vs уровни логирования

  • Файловые журналы контролируются исключительно logging.level.
  • --verbose влияет только на детализацию консоли (и стиль журнала WS); это не повышает уровень файлового журнала.
  • Для захвата деталей только для verbose в файловых журналах установите logging.level на debug или trace.

Захват консоли

CLI захватывает console.log/info/warn/error/debug/trace и записывает их в файловые журналы, все еще печатая в stdout/stderr.

Вы можете настроить детализацию консоли независимо через:

  • logging.consoleLevel (по умолчанию info)
  • logging.consoleStyle (pretty | compact | json)

Редактирование сводок инструментов

Подробные сводки инструментов (например, 🛠️ Exec: ...) могут маскировать чувствительные токены перед тем, как они попадут в поток консоли. Это только для инструментов и не изменяет файловые журналы.

  • logging.redactSensitive: off | tools (по умолчанию: tools)
  • logging.redactPatterns: массив строк регулярных выражений (переопределяет значения по умолчанию)
    • Используйте необработанные строки регулярных выражений (авто gi), или /pattern/flags, если вам нужны пользовательские флаги.
    • Совпадения маскируются путем сохранения первых 6 + последних 4 символов (длина >= 18), иначе ***.
    • Значения по умолчанию покрывают общие назначения ключей, флаги CLI, поля JSON, bearer-заголовки, блоки PEM и популярные префиксы токенов.

Журналы WebSocket шлюза

Шлюз печатает журналы протокола WebSocket в двух режимах:

  • Обычный режим (без --verbose): печатаются только "интересные" результаты RPC:
    • ошибки (ok=false)
    • медленные вызовы (порог по умолчанию: >= 50ms)
    • ошибки парсинга
  • Режим verbose (--verbose): печатается весь трафик запросов/ответов WS.

Стиль журнала WS

openclaw gateway поддерживает переключатель стиля для каждого шлюза:

  • --ws-log auto (по умолчанию): обычный режим оптимизирован; режим verbose использует компактный вывод
  • --ws-log compact: компактный вывод (парный запрос/ответ) при verbose
  • --ws-log full: полный вывод по фрейму при verbose
  • --compact: псевдоним для --ws-log compact

Примеры:

# оптимизированный (только ошибки/медленные)
openclaw gateway

# показать весь трафик WS (парный)
openclaw gateway --verbose --ws-log compact

# показать весь трафик WS (полные мета)
openclaw gateway --verbose --ws-log full

Форматирование консоли (логирование подсистем)

Форматировщик консоли осведомлен о TTY и печатает согласованные строки с префиксами. Логгеры подсистем сохраняют вывод сгруппированным и сканируемым.

Поведение:

  • Префиксы подсистем на каждой строке (например, [gateway], [canvas], [tailscale])
  • Цвета подсистем (стабильные по подсистеме) плюс окраска уровня
  • Цвет, когда вывод является TTY или окружение выглядит как богатый терминал (TERM/COLORTERM/TERM_PROGRAM), уважает NO_COLOR
  • Укороченные префиксы подсистем: отбрасывает ведущий gateway/ + channels/, сохраняет последние 2 сегмента (например, whatsapp/outbound)
  • Суб-логгеры по подсистеме (авто-префикс + структурированное поле \{ subsystem \})
  • logRaw() для вывода QR/UX (без префикса, без форматирования)
  • Стили консоли (например, pretty | compact | json)
  • Уровень журнала консоли отдельно от уровня файлового журнала (файл сохраняет полную детализацию, когда logging.level установлен на debug/trace)
  • Тела сообщений WhatsApp логируются на уровне debug (используйте --verbose для их просмотра)

Это сохраняет существующие файловые журналы стабильными, делая интерактивный вывод сканируемым.