Diagnostics
Флаги диагностики
Флаги диагностики включают дополнительное журналирование для одной подсистемы, не повышая
logging.level глобально. Флаг не действует, если подсистема его не проверяет.
Как это работает
- Флаги — это строки без учета регистра, получаемые из
diagnostics.flagsв конфигурации с учетом переопределения переменной окруженияOPENCLAW_DIAGNOSTICS, с удалением дубликатов и приведением к нижнему регистру. name.*соответствует самомуnameи всему, что находится подname.(например,telegram.*соответствуетtelegram.http).*илиallвключает все флаги.- Перезапустите Gateway после изменения
diagnostics.flagsв конфигурации; оно не применяется без перезапуска.
Известные флаги
| Флаг | Что включает |
|---|---|
telegram.http |
Журналирование HTTP-ошибок Telegram Bot API |
brave.http |
Журналирование запросов, ответов и кеша Brave Search |
profiler |
Профилировщик этапа ответа и профилировщик сервера приложений Codex (оба) |
reply.profiler |
Только профилировщик этапа ответа |
codex.profiler |
Только профилировщик сервера приложений Codex |
timeline |
Структурированный артефакт временной шкалы JSONL (см. ниже) |
Включение через конфигурацию
{ "diagnostics": { "flags": ["telegram.http"] }}Несколько флагов:
{ "diagnostics": { "flags": ["telegram.http", "brave.http", "gateway.*"] }}Переопределение переменной окружения (однократное)
OPENCLAW_DIAGNOSTICS=telegram.http,brave.httpЗначения разделяются запятыми или пробелами. Специальные значения:
| Значение | Эффект |
|---|---|
0, false, off, none |
Отключает все флаги, также переопределяя конфигурацию |
1, true, all, * |
Включает все флаги |
OPENCLAW_DIAGNOSTICS=0 отключает флаги как из переменной окружения, так и из конфигурации для этого
процесса. Это полезно, чтобы временно отключить флаг профилировщика, оставленный включенным в конфигурации,
не редактируя файл.
Флаги профилировщика
Флаги профилировщика управляют легковесными интервалами измерения времени; в выключенном состоянии они не создают накладных расходов.
Включить все интервалы, управляемые профилировщиком, для одного запуска Gateway:
OPENCLAW_DIAGNOSTICS=profiler openclaw gateway runВключить только интервалы профилировщика диспетчеризации ответов:
OPENCLAW_DIAGNOSTICS=reply.profiler openclaw gateway runВключить только интервалы профилировщика запуска, инструментов и потоков сервера приложений Codex:
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway runprofiler включает и профилировщик ответов, и профилировщик Codex; используйте
имена флагов с областью действия, чтобы включить только один из них.
Или задайте их в конфигурации:
{ "diagnostics": { "flags": ["reply.profiler", "codex.profiler"] }}Перезапустите Gateway после изменения флагов конфигурации. Чтобы отключить флаг профилировщика,
удалите его из diagnostics.flags и перезапустите Gateway либо запустите процесс с
OPENCLAW_DIAGNOSTICS=0, чтобы переопределить все флаги диагностики для этого запуска.
Артефакты временной шкалы
Флаг timeline (псевдоним: diagnostics.timeline) записывает структурированные события времени запуска
и выполнения в формате JSONL для внешних средств автоматизации контроля качества:
OPENCLAW_DIAGNOSTICS=timeline \OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-timeline.jsonl \openclaw gateway runИли включите его в конфигурации:
{ "diagnostics": { "flags": ["timeline"] }}Путь вывода всегда берется из OPENCLAW_DIAGNOSTICS_TIMELINE_PATH, даже
если сам флаг задан в конфигурации; ключа конфигурации для пути нет.
Если timeline включен только в конфигурации, самые ранние интервалы загрузки конфигурации
отсутствуют, поскольку OpenClaw еще не прочитал конфигурацию; последующие интервалы запуска
фиксируются как обычно.
OPENCLAW_DIAGNOSTICS=1, =all и =* также включают временную шкалу, поскольку они
включают все флаги. Используйте флаг с областью действия timeline, если вам нужен только
артефакт JSONL, а не все остальные флаги диагностики.
Для выборок задержки цикла событий во временной шкале требуется еще одно явное включение помимо
timeline: задайте OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 (или on/true/yes) в
дополнение к включению временной шкалы.
Записи временной шкалы используют оболочку openclaw.diagnostics.v1 и могут включать
идентификаторы процессов, имена фаз, имена интервалов, длительности, идентификаторы плагинов, количество
зависимостей, выборки задержки цикла событий, имена операций провайдера, состояние завершения
дочерних процессов, а также имена и сообщения ошибок запуска. Считайте файлы временной шкалы локальными
диагностическими артефактами; проверяйте их перед передачей за пределы своего компьютера.
Куда записываются журналы
Флаги записывают сообщения в стандартный файл журнала диагностики. По умолчанию:
/tmp/openclaw/openclaw-YYYY-MM-DD.logЕсли задан logging.file, вместо этого используется указанный в нем путь. Журналы имеют формат JSONL (один объект JSON
на строку). Редактирование конфиденциальных данных по-прежнему применяется на основе logging.redactSensitive.
Полное описание определения пути журнала, ротации и
редактирования конфиденциальных данных см. в разделе Журналирование.
Извлечение журналов
Выбрать последний файл журнала:
ls -t /tmp/openclaw/openclaw-*.log | head -n 1Отфильтровать HTTP-диагностику Telegram:
rg "telegram http error" /tmp/openclaw/openclaw-*.logОтфильтровать HTTP-диагностику Brave Search:
rg "brave http" /tmp/openclaw/openclaw-*.logИли отслеживать журнал во время воспроизведения:
tail -f /tmp/openclaw/openclaw-$(date +%F).log | rg "telegram http error"Для удаленных экземпляров Gateway вместо этого используйте openclaw logs --follow (см.
/cli/logs).
Примечания
- Если
logging.levelзадан вышеwarn, сообщения журналов, управляемые флагами, могут подавляться. Значениеinfoпо умолчанию подходит. brave.httpжурналирует URL-адреса и параметры запросов Brave Search, состояние и время ответов, а также события попадания в кеш, промаха кеша и записи в кеш. Он не журналирует ключ API (передаваемый в заголовке запроса) или тела ответов, однако поисковые запросы могут содержать конфиденциальные данные.- Флаги можно безопасно оставлять включенными; они влияют только на объем журналов соответствующей подсистемы.
- Используйте /logging, чтобы изменить места назначения журналов, уровни и редактирование конфиденциальных данных.