Логирование
Для ориентированного на пользователя обзора (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 для их просмотра)
Это сохраняет существующие файловые журналы стабильными, делая интерактивный вывод сканируемым.