Конфигурация и эксплуатация

Логирование

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

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

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

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

Формат файла — один объект JSON на строку. Вкладка Logs в Control UI отслеживает этот файл через шлюз (logs.tail). CLI может делать то же самое:

openclaw logs --follow

Подробный вывод vs. уровни логирования

  • Файловые логи управляются исключительно параметром logging.level.
  • --verbose влияет только на подробность вывода в консоль (и стиль логов WS); он не повышает уровень логирования в файл.
  • Чтобы зафиксировать в файловых логах детали, которые выводятся только в подробном режиме, установите 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): выводятся все запросы/ответы WS-трафика.

Стиль логов WS

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

  • --ws-log auto (по умолчанию): нормальный режим оптимизирован; подробный режим использует компактный вывод
  • --ws-log compact: компактный вывод (парные запрос/ответ) в подробном режиме
  • --ws-log full: полный вывод для каждого фрейма в подробном режиме
  • --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, чтобы видеть их)

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

ДиагностикаБлокировка шлюза