Consola

El flujo de diagnóstico en vivo del programa en marcha: 500 entradas en memoria, buscadas y filtradas por nivel, área y componente, con una captura detallada y un paquete de soporte para diagnosticar problemas.

Ver como Markdown

La pestaña Consola de Eventos (/events?view=console) es el flujo de diagnóstico de todo el programa: cada subsistema (la aplicación, el servidor OPC UA embebido, los drivers, Logic, Process, los paneles de control, el acceso de agente y las licencias) escribe en un solo flujo, y Consola muestra sus 500 entradas más recientes, en vivo. Es la última pestaña porque es el detalle técnico que se lee al final, después de las cronologías tipadas. Verla exige Ver los eventos; exportar filas o crear un paquete de soporte exige Exportar/importar históricos; iniciar o detener una captura detallada exige Cambiar los ajustes.

El flujo y su búfer

Consola es una proyección del único flujo de diagnóstico del proceso, guardada en memoria: las 500 entradas más recientes, compartidas por todas las superficies que la muestran (la ventana propia de la estación, todos los navegadores remotos, todas las pestañas). Las entradas viejas salen a medida que llegan las nuevas; nada de esta pestaña sobrevive a un reinicio. Ese mismo flujo se escribe en un archivo rotativo diario, logs\ganter-lab-<date>.log en la carpeta de datos de la estación (30 días guardados, 50 MB por archivo), que es lo que recoge un paquete de soporte.

Cada entrada se depura antes de llegar a Consola o al archivo: las contraseñas, los tokens, las claves y las credenciales dentro de una URL se reemplazan por "[REDACTED]", las cargas de protocolo (bytes en bruto, documentos JSON o XML) por "[PROTOCOL PAYLOAD OMITTED]", un mensaje se corta a los 16 KB y una excepción a los 64 KB con "…[TRUNCATED]". Solo entran en el flujo las entradas de nivel Information y superiores; el detalle prolijo, y las entradas que un productor marca como detalle de diagnóstico (charla de protocolo cruda y repetitiva), llegan únicamente a un archivo de captura detallada. Las fallas de comunicación que se repiten las agrupa su productor en una línea de primera falla, resúmenes periódicos y una línea de recuperación, para que un dispositivo averiado no inunde la lista.

Una entrada

Cada fila muestra la hora del día, un punto para el nivel (neutro para Información, precaución para Advertencia, crítico para Error), "Área · Componente" y el mensaje. El botón Copiar línea del borde derecho de una fila copia "marca de tiempo completa [Gravedad] Área · Componente mensaje" y el registro de acciones responde "Línea copiada al portapapeles." (o "El portapapeles rechazó la copia." en un navegador que lo retiene). Al hacer clic en la fila se selecciona y se abre el panel de detalle.

La casilla "Buscar en los mensajes y en todo el contexto disponible" filtra mientras se escribe, sin retardo. Una fila coincide cuando el texto está contenido (sin distinguir mayúsculas) en alguno de estos: el mensaje, el área, el componente, el logger, el dispositivo, el tag, la operación, el cliente, la sesión, la unidad, el procedimiento, el identificador de la corrida o el texto de detalle (una excepción y su traza de pila).

Las fichas de nivel

Tres fichas, Información, Advertencias y Errores, cada una un conmutador con un punto en el tono del nivel y un conteo en vivo. Una ficha encendida muestra su nivel; haga clic en ella para ocultarlo. El conteo es cuántas entradas revelaría la ficha con la búsqueda, el área y el componente actuales: respeta esos tres filtros e ignora los propios conmutadores de nivel, de modo que un nivel oculto sigue anunciando lo que guarda. Las tres empiezan encendidas.

No hay ficha de Debug: las entradas por debajo de Information nunca entran en el flujo, así que una ficha para ellas solo podría marcar 0 y no ocultaría nada. El detalle prolijo se encuentra en un archivo de captura detallada.

Las listas Área y Componente

Lista Valores Qué hace
Área Todas las áreas (predeterminado) y después una por subsistema: App, Servidor, Connector, Logic, Process, Dashboard, Agente, Licencias Conserva las entradas de un subsistema.
Componente Todos los componentes (predeterminado) y después todos los componentes presentes en el búfer para el área seleccionada, ordenados alfabéticamente Conserva las entradas de un productor concreto dentro del área (un driver, un trabajador, el SDK de OPC UA).
Área Qué escribe ahí
App El ciclo de vida de la aplicación: el anfitrión de escritorio, el registro, el tratamiento de fallas y de actualizaciones, las fallas del propio diario de eventos y todo lo que no nombró otra área.
Servidor El servidor OPC UA embebido y su SDK.
Connector La comunicación con los dispositivos: el conector, los drivers, las lecturas y escrituras de tags.
Logic Las variables, las acciones, los disparadores, las alarmas y el punto único de escritura.
Process Los modelos, las recetas, las evaluaciones, las ocurrencias, el monitor de enclavamientos y el ciclo de vida de la corrida.
Dashboard Los comandos presionados en los paneles de control, y el anfitrión web embebido que los sirve.
Agente Lo que hizo un agente de IA a través de MCP.
Licencias La licencia de la estación y el limitador del runtime sin licencia.

El componente elegido sigue en la lista incluso después de que todas las entradas que lo llevaban hayan salido del búfer, para que un filtro puesto a vigilar un driver no se ensanche en silencio a todos los componentes; una lista vacía es entonces la respuesta honesta. Cambiar el área reconstruye la lista de componentes de esa área.

Seguir el final

Con Seguir el final (desplazamiento automático) activado (lo predeterminado), la lista se pega a la entrada más reciente a medida que el flujo crece. Desplazarse hacia arriba lo desactiva, para poder leer algo mientras siguen llegando entradas; regresar a menos de 24 píxeles del fondo lo activa de nuevo. Mientras está desactivado, una píldora "N entradas nuevas" (o "1 entrada nueva") cuenta las llegadas que coinciden con los filtros actuales; haga clic en ella, o en el botón de la barra de herramientas, para saltar de vuelta al final. Cambiar a otra pestaña y regresar conserva el estado de seguimiento, y salta al final si estaba activado.

La barra de herramientas

Comando Qué hace Atenuado cuando No se dibuja cuando
Iniciar la captura / Detener la captura Inicia una captura detallada de diagnóstico de hasta 15 minutos, o detiene la que esté en marcha (véase más abajo). Mientras se está aplicando el cambio El rol no tiene Cambiar los ajustes
Abrir en una ventana Abre la página Eventos en una pestaña o ventana nueva del navegador, tanto en la ventana propia de la estación como en un navegador remoto, para poder dejar el flujo en un segundo monitor. La ventana nueva abre en la pestaña Consola, la misma en la que está el botón. Un navegador que bloquea las ventanas emergentes no abre nada y el registro de acciones lo dice: "El navegador no quiso abrir una segunda ventana. Permita las ventanas emergentes de esta estación e inténtelo de nuevo."
Ajuste de línea Reparte los mensajes largos en varias líneas en vez de recortarlos.
Seguir el final (desplazamiento automático) Activa el seguimiento (saltando al final y poniendo en cero el conteo de entradas nuevas) o lo desactiva.
Vaciar la vista Vacía el flujo en memoria en todas las superficies a la vez: la ventana de la estación, todos los navegadores remotos y todas las pestañas ven la misma lista vacía. El registro de acciones responde "Vista de la consola vaciada para toda la estación." Los archivos de registro rotativos, los archivos de captura y el diario de eventos quedan intactos. El runtime está detenido: el botón se atenúa, y su información emergente dice que la estación no acepta ningún cambio ahora mismo El rol no tiene Cambiar los ajustes
Exportar Abre el menú: Exportar como CSV…, Exportar como JSON… y, tras un separador, Crear paquete de soporte…. Crear paquete de soporte se atenúa mientras se está construyendo uno El rol no tiene Exportar/importar históricos

Captura detallada

Iniciar la captura eleva todo el proceso al registro prolijo durante quince minutos como máximo y escribe todo, detalle prolijo y charla de protocolo incluidos, en un archivo de captura propio: logs\diagnostic-captures\ganter-temporary-diagnostic-<stamp>-<id>.log en la carpeta de datos de la estación (una sesión rota a los 25 MB conservando dos archivos; se guardan las diez sesiones más recientes). El flujo de 500 entradas y el archivo rotativo normal se quedan exactamente como estaban: no les llega nada de más.

El botón dice entonces Detener la captura; su información emergente dice "Detener antes de tiempo la captura de diagnóstico detallada. Iniciada hh:mm:ss." La captura se detiene sola cuando la cuenta regresiva llega a cero, cuando se presiona el botón o cuando la aplicación se cierra. Los dos finales se anuncian en el registro de acciones ("Captura detallada iniciada durante un máximo de 15 minutos.", "Captura detallada detenida.") y dejan líneas de Consola bajo App · Captura de diagnóstico.

La captura es un interruptor de toda la estación: todos los circuitos ven la misma cuenta regresiva, y sobrevive a la ventana que la presionó. Por eso exige Cambiar los ajustes: a un rol sin ese permiso no se le dibuja el botón, y presionarlo de todos modos responde "Iniciar o detener la captura detallada necesita el permiso Cambiar los ajustes." Lo que la captura está haciendo no queda bajo ningún permiso: mientras graba, un visor junto al botón lleva un punto de grabación, "Captura detallada activa" y el tiempo que le queda (mm:ss, desde 15:00), y todos los roles lo leen. Cuando no hay nada grabando, ese mismo visor queda solo para el lector de pantalla, que dice "Captura detallada inactiva".

Crear paquete de soporte

El último elemento del menú Exportar construye un zip para entregar al soporte y lo descarga por el navegador; el registro de acciones responde "Paquete de soporte creado:" seguido del nombre del archivo (ganter-support-<stamp>-<id>.zip), o "Error en el paquete de soporte:" seguido del motivo. Exige Exportar/importar históricos como toda exportación. El paquete contiene:

Entrada Contenido
recent-console.json Las entradas del flujo en memoria como registros estructurados (todos los campos de todas las entradas, no la vista filtrada).
logs/ganter-lab-*.log Los archivos de registro rotativos normales.
diagnostic-captures/ganter-temporary-diagnostic-*.log Los archivos de captura detallada.
manifest.json Cuándo se generó, el estado de la captura (activa, iniciada, termina, detenida, nombre del archivo), cuántas entradas del flujo se incluyeron, los límites, la lista de archivos incluidos con su tamaño, y cada omisión con su motivo.

Los archivos se toman del más nuevo al más antiguo dentro de un presupuesto: 8 archivos como máximo, 24 MB por archivo como máximo y 96 MB en total; un archivo mayor que su parte se incluye solo por la cola (sus bytes más recientes) y el manifiesto lo dice. El zip se construye en la carpeta temporal del sistema y se borra en cuanto la descarga se sirvió.

El panel de detalle

Al seleccionar una entrada se abre el panel con la insignia de gravedad, "Área · Componente" y una cruz de cierre, y después:

Sección Campo Contenido
Encabezado Marca de tiempo Fecha y hora completas con milisegundos.
Encabezado Mensaje El mensaje de una línea.
CONTEXTO Área El subsistema.
CONTEXTO Componente El productor concreto.
CONTEXTO Logger La categoría de logger que hay detrás de la entrada, mostrada cuando se conoce.
CONTEXTO Nivel Debug, Information, Warning o Error.
CONTEXTO Dispositivo, Tag, Operación, Cliente, Sesión, Unidad, Procedimiento, Corrida Cada uno se muestra solo cuando la entrada lo lleva: el dispositivo y el tag a los que se refiere una línea del conector, la operación que se está diagnosticando (una lectura, una escritura, una conexión), el cliente y la sesión OPC o de protocolo, y la unidad, el procedimiento y el identificador de la corrida de Process.
DETALLES El texto de la excepción y la traza de pila, cuando la entrada llevaba una.

Copiar entrada, en el pie, copia todo el panel como texto (la línea de encabezado, el mensaje, una línea "Etiqueta: valor" por campo de contexto y después el bloque de detalle) y responde "Entrada copiada al portapapeles." La selección se suelta si la entrada sale del búfer, y la limpia Vaciar la vista.

Exportar

Exportar como CSV… y Exportar como JSON… escriben las filas visibles en ese momento (la vista filtrada) como una descarga del navegador llamada app-logs-<yyyyMMdd-HHmmss>.csv o .json; el registro de acciones responde "Se exportaron N fila(s) a" seguido del nombre del archivo. Los dos llevan las mismas columnas, en este orden: Timestamp (encabezada "Timestamp (UTC-03:00)" en el CSV, la referencia horaria declarada una sola vez), Severity, Area, Component, Logger, Device, Tag, Operation, Client, Session, Unit, Procedure, RunId, Message y Exception. El JSON es un sobre, { "TimeZone": "...", "Entries": [ ... ] }. Una celda CSV que empieza por =, +, - o @ se prefija con un apóstrofo para que la hoja de cálculo la lea como texto.

La línea de estado

"N mostradas · M en el búfer", después " · filtrado" mientras hay cualquier filtro de búsqueda, de área, de componente o de nivel en vigor; a la derecha, "1 seleccionada" mientras hay una entrada seleccionada y "Actualizado hh:mm:ss", la hora de la última entrada que llegó. Cuando no coincide nada, la lista dice "Ninguna entrada coincide con los filtros actuales. Ajuste el nivel, el área, el componente o la búsqueda para ver más."

Qué no hace Consola

  • No es un registro: guarda 500 entradas en memoria, las pierde al reiniciar, y Vaciar la vista la deja vacía para todo el mundo. El registro persistente son las tres cronologías y, en disco, los archivos de registro rotativos.
  • No muestra nada por debajo de Information, ni nunca el detalle de protocolo; para eso está una captura detallada.
  • Vaciar la vista no borra ningún archivo ni ninguna fila del diario, se rechaza mientras el runtime está detenido, y se dibuja solo para un rol que pueda cambiar los ajustes, como Exportar e Iniciar la captura a su lado.
  • La captura detallada no se puede alargar más allá de quince minutos; inicie otra.
  • Exportar escribe lo que está visible, nunca los archivos del disco; el paquete de soporte es la forma en que los archivos salen de la estación.
  • Un agente con el área Logs abierta lee ese mismo flujo mediante logs_read (véase Herramientas); no puede vaciarlo.