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 (см. ниже)

Включение через конфигурацию

json
{  "diagnostics": {    "flags": ["telegram.http"]  }}

Несколько флагов:

json
{  "diagnostics": {    "flags": ["telegram.http", "brave.http", "gateway.*"]  }}

Переопределение переменной окружения (однократное)

bash
OPENCLAW_DIAGNOSTICS=telegram.http,brave.http

Значения разделяются запятыми или пробелами. Специальные значения:

Значение Эффект
0, false, off, none Отключает все флаги, также переопределяя конфигурацию
1, true, all, * Включает все флаги

OPENCLAW_DIAGNOSTICS=0 отключает флаги как из переменной окружения, так и из конфигурации для этого процесса. Это полезно, чтобы временно отключить флаг профилировщика, оставленный включенным в конфигурации, не редактируя файл.

Флаги профилировщика

Флаги профилировщика управляют легковесными интервалами измерения времени; в выключенном состоянии они не создают накладных расходов.

Включить все интервалы, управляемые профилировщиком, для одного запуска Gateway:

bash
OPENCLAW_DIAGNOSTICS=profiler openclaw gateway run

Включить только интервалы профилировщика диспетчеризации ответов:

bash
OPENCLAW_DIAGNOSTICS=reply.profiler openclaw gateway run

Включить только интервалы профилировщика запуска, инструментов и потоков сервера приложений Codex:

bash
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway run

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

Или задайте их в конфигурации:

json
{  "diagnostics": {    "flags": ["reply.profiler", "codex.profiler"]  }}

Перезапустите Gateway после изменения флагов конфигурации. Чтобы отключить флаг профилировщика, удалите его из diagnostics.flags и перезапустите Gateway либо запустите процесс с OPENCLAW_DIAGNOSTICS=0, чтобы переопределить все флаги диагностики для этого запуска.

Артефакты временной шкалы

Флаг timeline (псевдоним: diagnostics.timeline) записывает структурированные события времени запуска и выполнения в формате JSONL для внешних средств автоматизации контроля качества:

bash
OPENCLAW_DIAGNOSTICS=timeline \OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-timeline.jsonl \openclaw gateway run

Или включите его в конфигурации:

json
{  "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 и могут включать идентификаторы процессов, имена фаз, имена интервалов, длительности, идентификаторы плагинов, количество зависимостей, выборки задержки цикла событий, имена операций провайдера, состояние завершения дочерних процессов, а также имена и сообщения ошибок запуска. Считайте файлы временной шкалы локальными диагностическими артефактами; проверяйте их перед передачей за пределы своего компьютера.

Куда записываются журналы

Флаги записывают сообщения в стандартный файл журнала диагностики. По умолчанию:

Code
/tmp/openclaw/openclaw-YYYY-MM-DD.log

Если задан logging.file, вместо этого используется указанный в нем путь. Журналы имеют формат JSONL (один объект JSON на строку). Редактирование конфиденциальных данных по-прежнему применяется на основе logging.redactSensitive. Полное описание определения пути журнала, ротации и редактирования конфиденциальных данных см. в разделе Журналирование.

Извлечение журналов

Выбрать последний файл журнала:

bash
ls -t /tmp/openclaw/openclaw-*.log | head -n 1

Отфильтровать HTTP-диагностику Telegram:

bash
rg "telegram http error" /tmp/openclaw/openclaw-*.log

Отфильтровать HTTP-диагностику Brave Search:

bash
rg "brave http" /tmp/openclaw/openclaw-*.log

Или отслеживать журнал во время воспроизведения:

bash
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, чтобы изменить места назначения журналов, уровни и редактирование конфиденциальных данных.

Связанные материалы

Was this useful?
On this page

On this page