Gateway
Журналювання
OpenClaw має дві основні поверхні журналів:
- Файлові журнали (рядки JSON), які записує Gateway.
- Консольний вивід, що відображається в терміналах і Gateway Debug UI.
Вкладка Logs у Control UI відстежує файловий журнал Gateway. На цій сторінці пояснено, де розміщені журнали, як їх читати та як налаштовувати рівні й формати журналювання.
Де розміщені журнали
За замовчуванням Gateway записує ротаційний файл журналу в:
/tmp/openclaw/openclaw-YYYY-MM-DD.log
Дата використовує локальний часовий пояс хоста Gateway.
Кожен файл ротуються, коли досягає logging.maxFileBytes (за замовчуванням: 100 МБ).
OpenClaw зберігає до п’яти нумерованих архівів поруч з активним файлом, наприклад
openclaw-YYYY-MM-DD.1.log, і продовжує писати в новий активний журнал замість
пригнічення діагностики.
Це можна перевизначити в ~/.openclaw/openclaw.json:
{
"logging": {
"file": "/path/to/openclaw.log"
}
}
Як читати журнали
CLI: live tail (рекомендовано)
Використовуйте CLI, щоб відстежувати файл журналу Gateway через RPC:
openclaw logs --follow
Корисні поточні параметри:
--local-time: показувати часові позначки у вашому локальному часовому поясі--url <url>/--token <token>/--timeout <ms>: стандартні прапорці RPC Gateway--expect-final: прапорець очікування фінальної відповіді RPC на основі агента (приймається тут через спільний клієнтський шар)
Режими виводу:
- Сеанси TTY: гарні, кольорові, структуровані рядки журналу.
- Сеанси не-TTY: звичайний текст.
--json: JSON із розділенням по рядках (одна подія журналу на рядок).--plain: примусово використовувати звичайний текст у сеансах TTY.--no-color: вимкнути кольори ANSI.
Коли ви передаєте явний --url, CLI не застосовує автоматично конфігурацію або
облікові дані з середовища; додайте --token самостійно, якщо цільовий Gateway
вимагає автентифікації.
У режимі JSON CLI виводить об’єкти з тегом type:
meta: метадані потоку (файл, курсор, розмір)log: розібраний запис журналуnotice: підказки про обрізання / ротаціюraw: нерозібраний рядок журналу
Якщо неявний Gateway на local loopback просить спарювання, закривається під час підключення
або перевищує час очікування до відповіді logs.tail, openclaw logs автоматично
переходить до налаштованого файлового журналу Gateway. Явні цілі --url не використовують
цей резервний варіант.
Якщо Gateway недоступний, CLI виводить коротку підказку виконати:
openclaw doctor
Control UI (веб)
Вкладка Logs у Control UI відстежує той самий файл за допомогою logs.tail.
Див. Control UI, щоб дізнатися, як її відкрити.
Журнали лише каналів
Щоб фільтрувати активність каналів (WhatsApp/Telegram/тощо), використовуйте:
openclaw channels logs --channel whatsapp
Формати журналів
Файлові журнали (JSONL)
Кожен рядок у файлі журналу є об’єктом JSON. CLI і Control UI розбирають ці записи, щоб відображати структурований вивід (час, рівень, підсистему, повідомлення).
Записи JSONL файлового журналу також містять придатні для машинної фільтрації поля верхнього рівня, коли вони доступні:
hostname: ім’я хоста Gateway.message: сплощений текст повідомлення журналу для повнотекстового пошуку.agent_id: ідентифікатор активного агента, коли виклик журналу містить контекст агента.session_id: ідентифікатор/ключ активного сеансу, коли виклик журналу містить контекст сеансу.channel: активний канал, коли виклик журналу містить контекст каналу.
OpenClaw зберігає початкові структуровані аргументи журналу поруч із цими полями, щоб наявні парсери, які читають нумеровані ключі аргументів tslog, продовжували працювати.
Активність розмов, голосу в реальному часі та керованих кімнат створює обмежені записи журналу життєвого циклу через той самий конвеєр файлових журналів. Ці записи містять тип події, режим, транспорт, провайдера та вимірювання розміру/таймінгу, коли вони доступні, але не містять текст транскрипту, аудіодані, ідентифікатори ходів, ідентифікатори викликів та ідентифікатори елементів провайдера.
Консольний вивід
Консольні журнали обізнані про TTY і форматуються для зручності читання:
- Префікси підсистем (наприклад,
gateway/channels/whatsapp) - Кольори рівнів (info/warn/error)
- Необов’язковий компактний режим або режим JSON
Форматування консолі керується logging.consoleStyle.
Журнали WebSocket Gateway
openclaw gateway також має журналювання протоколу WebSocket для RPC-трафіку:
- звичайний режим: лише цікаві результати (помилки, помилки розбору, повільні виклики)
--verbose: увесь трафік запитів/відповідей--ws-log auto|compact|full: вибрати стиль докладного відображення--compact: псевдонім для--ws-log compact
Приклади:
openclaw gateway
openclaw gateway --verbose --ws-log compact
openclaw gateway --verbose --ws-log full
Налаштування журналювання
Уся конфігурація журналювання розміщується в logging у ~/.openclaw/openclaw.json.
{
"logging": {
"level": "info",
"file": "/tmp/openclaw/openclaw-YYYY-MM-DD.log",
"consoleLevel": "info",
"consoleStyle": "pretty",
"redactSensitive": "tools",
"redactPatterns": ["sk-.*"]
}
}
Рівні журналювання
logging.level: рівень файлових журналів (JSONL).logging.consoleLevel: рівень докладності консолі.
Можна перевизначити обидва через змінну середовища OPENCLAW_LOG_LEVEL (наприклад, OPENCLAW_LOG_LEVEL=debug). Змінна середовища має пріоритет над файлом конфігурації, тож можна підвищити докладність для одного запуску без редагування openclaw.json. Також можна передати глобальний параметр CLI --log-level <level> (наприклад, openclaw --log-level debug gateway run), який перевизначає змінну середовища для цієї команди.
--verbose впливає лише на консольний вивід і докладність журналів WS; він не змінює
рівні файлових журналів.
Кореляція трасування
Файлові журнали мають формат JSONL. Коли виклик журналу містить дійсний діагностичний контекст трасування,
OpenClaw записує поля трасування як ключі JSON верхнього рівня (traceId, spanId,
parentSpanId, traceFlags), щоб зовнішні обробники журналів могли корелювати рядок
зі спанами OTEL і поширенням traceparent провайдера.
HTTP-запити Gateway і кадри WebSocket Gateway створюють внутрішню область трасування запиту.
Журнали та діагностичні події, створені всередині цієї асинхронної області, успадковують
трасування запиту, коли вони не передають явний контекст трасування. Трасування запусків агента та
викликів моделі стають дочірніми для активного трасування запиту, тому локальні журнали,
діагностичні знімки, спани OTEL і довірені заголовки traceparent провайдера можна
об’єднувати за traceId без журналювання сирого вмісту запиту або моделі.
Записи журналу життєвого циклу розмов також надходять до журналів OTLP, коли ввімкнено експорт журналів OpenTelemetry, використовуючи ті самі обмежені атрибути, що й файлові журнали.
Розмір і таймінг виклику моделі
Діагностика викликів моделі записує обмежені вимірювання запиту/відповіді без захоплення сирого вмісту промпта або відповіді:
requestPayloadBytes: розмір у байтах UTF-8 фінального payload запиту до моделіresponseStreamBytes: розмір у байтах UTF-8 потокових подій відповіді моделіtimeToFirstByteMs: час, що минув до першої потокової події відповідіdurationMs: загальна тривалість виклику моделі
Ці поля доступні для діагностичних знімків, hooks Plugin для викликів моделі та спанів/метрик OTEL викликів моделі, коли ввімкнено експорт діагностики.
Стилі консолі
logging.consoleStyle:
pretty: зручний для людини, кольоровий, із часовими позначками.compact: щільніший вивід (найкраще для довгих сеансів).json: JSON на рядок (для обробників журналів).
Редакція
OpenClaw може редагувати чутливі токени до того, як вони потраплять у консольний вивід, файлові журнали, записи журналів OTLP, збережений текст транскрипту сеансу або payload подій інструментів Control UI (аргументи запуску інструмента, часткові/фінальні payload результатів, похідний exec-вивід і підсумки patch):
logging.redactSensitive:off|tools(за замовчуванням:tools)logging.redactPatterns: список regex-рядків для перевизначення стандартного набору. Користувацькі шаблони застосовуються поверх вбудованих стандартних шаблонів для payload інструментів Control UI, тому додавання шаблону ніколи не послаблює редакцію значень, які вже виявляють стандартні шаблони.
Файлові журнали та транскрипти сеансів залишаються JSONL, але відповідні секретні значення маскуються перед записом рядка або повідомлення на диск. Редакція виконується за принципом best-effort: вона застосовується до текстового вмісту повідомлень і рядків журналу, а не до кожного ідентифікатора або поля бінарного payload.
Вбудовані стандартні шаблони охоплюють поширені облікові дані API та назви полів платіжних облікових даних, як-от номер картки, CVC/CVV, спільний платіжний токен і платіжні облікові дані, коли вони з’являються як поля JSON, параметри URL, прапорці CLI або присвоєння.
logging.redactSensitive: "off" вимикає лише цю загальну політику журналів/транскриптів.
OpenClaw усе одно редагує payload меж безпеки, які можуть відображатися клієнтам UI,
пакетам підтримки, діагностичним спостерігачам, промптам затвердження або інструментам агента.
Приклади включають події викликів інструментів Control UI, вивід sessions_history,
експорти підтримки діагностики, спостереження помилок провайдера, показ команди затвердження exec
і журнали протоколу WebSocket Gateway. Користувацькі logging.redactPatterns
можуть усе ще додавати проєктні шаблони на цих поверхнях.
Діагностика та OpenTelemetry
Діагностика — це структуровані, машинозчитувані події для запусків моделі та телеметрії потоку повідомлень (webhooks, черги, стан сеансу). Вони не замінюють журнали — вони живлять метрики, трасування та експортери. Події створюються в процесі незалежно від того, експортуєте ви їх чи ні.
Дві суміжні поверхні:
- Експорт OpenTelemetry — надсилайте метрики, трасування та журнали через OTLP/HTTP до будь-якого сумісного з OpenTelemetry збирача або бекенду (Grafana, Datadog, Honeycomb, New Relic, Tempo тощо). Повна конфігурація, каталог сигналів, назви метрик/спанів, змінні середовища та модель приватності розміщені на окремій сторінці: Експорт OpenTelemetry.
- Прапорці діагностики — цільові прапорці debug-журналів, які спрямовують додаткові журнали до
logging.fileбез підвищенняlogging.level. Прапорці не чутливі до регістру і підтримують wildcards (telegram.*,*). Налаштовуйте вdiagnostics.flagsабо через перевизначення змінної середовищаOPENCLAW_DIAGNOSTICS=.... Повний посібник: Прапорці діагностики.
Щоб увімкнути діагностичні події для Plugin або користувацьких приймачів без експорту OTLP:
{
diagnostics: { enabled: true },
}
Для експорту OTLP до збирача див. Експорт OpenTelemetry.
Поради з усунення несправностей
- Gateway недоступний? Спершу виконайте
openclaw doctor. - Журнали порожні? Перевірте, що Gateway запущений і записує у шлях до файлу
в
logging.file. - Потрібно більше деталей? Установіть
logging.levelнаdebugабоtraceі повторіть спробу.
Пов’язане
- Експорт OpenTelemetry — експорт OTLP/HTTP, каталог метрик/спанів, модель приватності
- Прапорці діагностики — цільові прапорці debug-журналів
- Внутрішнє журналювання Gateway — стилі журналів WS, префікси підсистем і захоплення консолі
- Довідник конфігурації — повний довідник полів
diagnostics.*