Логирование
Для обзора, ориентированного на пользователя (CLI + Control UI + конфигурация), см. /logging. У OpenClaw есть две «поверхности» логирования:
- Вывод в консоль (то, что вы видите в терминале / Debug UI).
- Файловые логи (строки JSON), записываемые логгером шлюза.
Файловый логгер
- Файл ротируемых логов по умолчанию находится в
/tmp/openclaw/(один файл в день):openclaw-YYYY-MM-DD.log- Дата использует локальный часовой пояс хоста шлюза.
- Путь к файлу логов и уровень логирования можно настроить через
~/.openclaw/openclaw.json:logging.filelogging.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, чтобы видеть их)
Это сохраняет стабильность существующих файловых логов, делая интерактивный вывод удобным для просмотра.