Registro
OpenClaw tiene dos superficies principales de registro:- Registros de archivo (líneas JSON) escritos por el Gateway.
- Salida de consola mostrada en terminales y en la UI de depuración del Gateway.
Dónde se encuentran los registros
De forma predeterminada, el Gateway escribe un archivo de registro rotativo en:/tmp/openclaw/openclaw-YYYY-MM-DD.log
La fecha usa la zona horaria local del host del gateway.
Puedes anular esto en ~/.openclaw/openclaw.json:
Cómo leer los registros
CLI: seguimiento en vivo (recomendado)
Usa la CLI para seguir el archivo de registro del gateway mediante RPC:--local-time: mostrar las marcas de tiempo en tu zona horaria local--url <url>/--token <token>/--timeout <ms>: indicadores estándar de RPC del Gateway--expect-final: indicador de espera de respuesta final de RPC respaldada por agente (aceptado aquí mediante la capa de cliente compartida)
- Sesiones TTY: líneas de registro estructuradas, bonitas y con color.
- Sesiones no TTY: texto sin formato.
--json: JSON delimitado por líneas (un evento de registro por línea).--plain: forzar texto sin formato en sesiones TTY.--no-color: deshabilitar colores ANSI.
--url explícito, la CLI no aplica automáticamente credenciales de configuración o
del entorno; incluye tú mismo --token si el Gateway de destino
requiere autenticación.
En modo JSON, la CLI emite objetos etiquetados por type:
meta: metadatos del flujo (archivo, cursor, tamaño)log: entrada de registro analizadanotice: indicaciones de truncamiento / rotaciónraw: línea de registro sin analizar
openclaw logs recurre automáticamente al
archivo de registro local configurado. Los destinos --url explícitos no
usan este respaldo.
Si el Gateway no es accesible, la CLI imprime una breve sugerencia para ejecutar:
UI de Control (web)
La pestaña Logs de la UI de Control sigue el mismo archivo usandologs.tail.
Consulta /web/control-ui para saber cómo abrirla.
Registros solo de canal
Para filtrar la actividad de canales (WhatsApp/Telegram/etc.), usa:Formatos de registro
Registros de archivo (JSONL)
Cada línea del archivo de registro es un objeto JSON. La CLI y la UI de Control analizan estas entradas para renderizar una salida estructurada (hora, nivel, subsistema, mensaje).Salida de consola
Los registros de consola son con reconocimiento de TTY y están formateados para facilitar la lectura:- Prefijos de subsistema (p. ej.
gateway/channels/whatsapp) - Coloreado por nivel (
info/warn/error) - Modo compacto o JSON opcional
logging.consoleStyle.
Registros WebSocket del Gateway
openclaw gateway también tiene registro del protocolo WebSocket para tráfico RPC:
- modo normal: solo resultados interesantes (errores, errores de análisis, llamadas lentas)
--verbose: todo el tráfico de solicitud/respuesta--ws-log auto|compact|full: elige el estilo de renderizado detallado--compact: alias de--ws-log compact
Configurar el registro
Toda la configuración de registro se encuentra bajologging en ~/.openclaw/openclaw.json.
Niveles de registro
logging.level: nivel de los registros de archivo (JSONL).logging.consoleLevel: nivel de verbosidad de la consola.
OPENCLAW_LOG_LEVEL (p. ej. OPENCLAW_LOG_LEVEL=debug). La variable de entorno tiene prioridad sobre el archivo de configuración, por lo que puedes aumentar la verbosidad para una sola ejecución sin editar openclaw.json. También puedes pasar la opción global de la CLI --log-level <level> (por ejemplo, openclaw --log-level debug gateway run), que anula la variable de entorno para ese comando.
--verbose solo afecta a la salida de consola y a la verbosidad del registro WS; no cambia
los niveles del registro de archivo.
Estilos de consola
logging.consoleStyle:
pretty: fácil de leer para humanos, con color y marcas de tiempo.compact: salida más ajustada (mejor para sesiones largas).json: JSON por línea (para procesadores de registros).
Redacción
Los resúmenes de herramientas pueden redactar tokens sensibles antes de que lleguen a la consola:logging.redactSensitive:off|tools(predeterminado:tools)logging.redactPatterns: lista de cadenas regex para anular el conjunto predeterminado
Diagnósticos + OpenTelemetry
Los diagnósticos son eventos estructurados y legibles por máquina para ejecuciones de modelos y telemetría del flujo de mensajes (webhooks, colas, estado de sesión). No sustituyen a los registros; existen para alimentar métricas, trazas y otros exportadores. Los eventos de diagnóstico se emiten dentro del proceso, pero los exportadores solo se adjuntan cuando los diagnósticos + el plugin exportador están habilitados.OpenTelemetry frente a OTLP
- OpenTelemetry (OTel): el modelo de datos + SDK para trazas, métricas y registros.
- OTLP: el protocolo de transporte utilizado para exportar datos de OTel a un recolector/backend.
- OpenClaw exporta mediante OTLP/HTTP (protobuf) hoy en día.
Señales exportadas
- Métricas: contadores + histogramas (uso de tokens, flujo de mensajes, colas).
- Trazas: spans para uso de modelos + procesamiento de webhook/mensajes.
- Registros: exportados por OTLP cuando
diagnostics.otel.logsestá habilitado. El volumen de registros puede ser alto; ten en cuentalogging.levely los filtros del exportador.
Catálogo de eventos de diagnóstico
Uso del modelo:model.usage: tokens, coste, duración, contexto, proveedor/modelo/canal, IDs de sesión.
webhook.received: ingreso de webhook por canal.webhook.processed: webhook gestionado + duración.webhook.error: errores del controlador de webhook.message.queued: mensaje encolado para su procesamiento.message.processed: resultado + duración + error opcional.
queue.lane.enqueue: entrada en carril de cola de comandos + profundidad.queue.lane.dequeue: salida de carril de cola de comandos + tiempo de espera.session.state: transición de estado de sesión + motivo.session.stuck: advertencia de sesión atascada + antigüedad.run.attempt: metadatos de reintento/intento de ejecución.diagnostic.heartbeat: contadores agregados (webhooks/cola/sesión).
Habilitar diagnósticos (sin exportador)
Usa esto si quieres que los eventos de diagnóstico estén disponibles para plugins o destinos personalizados:Indicadores de diagnóstico (registros dirigidos)
Usa indicadores para activar registros adicionales y dirigidos de depuración sin aumentarlogging.level.
Los indicadores no distinguen mayúsculas de minúsculas y admiten comodines (p. ej. telegram.* o *).
- Los registros de indicadores van al archivo de registro estándar (el mismo que
logging.file). - La salida sigue redactándose según
logging.redactSensitive. - Guía completa: /diagnostics/flags.
Exportar a OpenTelemetry
Los diagnósticos pueden exportarse mediante el plugindiagnostics-otel (OTLP/HTTP). Esto
funciona con cualquier recolector/backend de OpenTelemetry que acepte OTLP/HTTP.
- También puedes habilitar el plugin con
openclaw plugins enable diagnostics-otel. protocolactualmente solo admitehttp/protobuf.grpcse ignora.- Las métricas incluyen uso de tokens, coste, tamaño de contexto, duración de ejecución y contadores/histogramas de flujo de mensajes (webhooks, colas, estado de sesión, profundidad/espera de cola).
- Las trazas/métricas pueden activarse o desactivarse con
traces/metrics(predeterminado: activado). Las trazas incluyen spans de uso de modelos más spans de procesamiento de webhook/mensajes cuando están habilitadas. - Establece
headerscuando tu recolector requiera autenticación. - Variables de entorno compatibles:
OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_SERVICE_NAME,OTEL_EXPORTER_OTLP_PROTOCOL.
Métricas exportadas (nombres + tipos)
Uso del modelo:openclaw.tokens(contador, atributos:openclaw.token,openclaw.channel,openclaw.provider,openclaw.model)openclaw.cost.usd(contador, atributos:openclaw.channel,openclaw.provider,openclaw.model)openclaw.run.duration_ms(histograma, atributos:openclaw.channel,openclaw.provider,openclaw.model)openclaw.context.tokens(histograma, atributos:openclaw.context,openclaw.channel,openclaw.provider,openclaw.model)
openclaw.webhook.received(contador, atributos:openclaw.channel,openclaw.webhook)openclaw.webhook.error(contador, atributos:openclaw.channel,openclaw.webhook)openclaw.webhook.duration_ms(histograma, atributos:openclaw.channel,openclaw.webhook)openclaw.message.queued(contador, atributos:openclaw.channel,openclaw.source)openclaw.message.processed(contador, atributos:openclaw.channel,openclaw.outcome)openclaw.message.duration_ms(histograma, atributos:openclaw.channel,openclaw.outcome)
openclaw.queue.lane.enqueue(contador, atributos:openclaw.lane)openclaw.queue.lane.dequeue(contador, atributos:openclaw.lane)openclaw.queue.depth(histograma, atributos:openclaw.laneoopenclaw.channel=heartbeat)openclaw.queue.wait_ms(histograma, atributos:openclaw.lane)openclaw.session.state(contador, atributos:openclaw.state,openclaw.reason)openclaw.session.stuck(contador, atributos:openclaw.state)openclaw.session.stuck_age_ms(histograma, atributos:openclaw.state)openclaw.run.attempt(contador, atributos:openclaw.attempt)
Spans exportados (nombres + atributos clave)
openclaw.model.usageopenclaw.channel,openclaw.provider,openclaw.modelopenclaw.sessionKey,openclaw.sessionIdopenclaw.tokens.*(input/output/cache_read/cache_write/total)
openclaw.webhook.processedopenclaw.channel,openclaw.webhook,openclaw.chatId
openclaw.webhook.erroropenclaw.channel,openclaw.webhook,openclaw.chatId,openclaw.error
openclaw.message.processedopenclaw.channel,openclaw.outcome,openclaw.chatId,openclaw.messageId,openclaw.sessionKey,openclaw.sessionId,openclaw.reason
openclaw.session.stuckopenclaw.state,openclaw.ageMs,openclaw.queueDepth,openclaw.sessionKey,openclaw.sessionId
Muestreo + vaciado
- Muestreo de trazas:
diagnostics.otel.sampleRate(0.0–1.0, solo spans raíz). - Intervalo de exportación de métricas:
diagnostics.otel.flushIntervalMs(mín. 1000 ms).
Notas del protocolo
- Los endpoints OTLP/HTTP pueden establecerse mediante
diagnostics.otel.endpointoOTEL_EXPORTER_OTLP_ENDPOINT. - Si el endpoint ya contiene
/v1/traceso/v1/metrics, se usa tal cual. - Si el endpoint ya contiene
/v1/logs, se usa tal cual para los registros. diagnostics.otel.logshabilita la exportación de registros OTLP para la salida del registrador principal.
Comportamiento de exportación de registros
- Los registros OTLP usan los mismos registros estructurados que se escriben en
logging.file. - Respetan
logging.level(nivel de registro de archivo). La redacción de consola no se aplica a los registros OTLP. - Las instalaciones con alto volumen deberían preferir muestreo/filtrado en el recolector OTLP.
Consejos para la solución de problemas
- ¿No se puede alcanzar el Gateway? Ejecuta primero
openclaw doctor. - ¿Registros vacíos? Comprueba que el Gateway esté en ejecución y escribiendo en la ruta de archivo
de
logging.file. - ¿Necesitas más detalle? Establece
logging.levelendebugotracey vuelve a intentarlo.
Relacionado
- Internos del registro del Gateway — estilos de registro WS, prefijos de subsistema y captura de consola
- Diagnósticos — exportación de OpenTelemetry y configuración de trazas de caché