Console
Il flusso di diagnostica in tempo reale del programma in esecuzione: 500 voci in memoria, cercate e filtrate per livello, area e componente, con una cattura dettagliata e un pacchetto di supporto per la ricerca dei guasti.
La scheda Console di Eventi (/events?view=console) è il flusso di diagnostica di tutto
il programma: ogni sottosistema (l'applicazione, il server OPC UA incorporato, i driver, Logic,
Process, le dashboard, l'accesso agente e le licenze) scrive in un unico flusso, e Console ne mostra
dal vivo le 500 voci più recenti. È l'ultima scheda perché è il dettaglio tecnico che si legge per
ultimo, dopo le cronologie tipizzate. Vederla richiede Visualizzare gli eventi; esportare righe
o creare un pacchetto di supporto richiede Esportare/importare gli storici; avviare o arrestare
una cattura dettagliata richiede Modificare le impostazioni.
Il flusso e il suo buffer
Console è una proiezione dell'unico flusso di diagnostica del processo, tenuto in memoria: le 500
voci più recenti, condivise da ogni superficie che lo mostra (la finestra propria della stazione,
ogni browser remoto, ogni scheda). Le voci più vecchie escono man mano che ne arrivano di nuove;
niente in questa scheda sopravvive a un riavvio. Lo stesso flusso è scritto in un file giornaliero a
rotazione, logs\ganter-lab-<date>.log nella cartella dati della stazione (30 giorni conservati, 50
MB per file), ed è ciò che un pacchetto di supporto raccoglie.
Ogni voce è ripulita prima di raggiungere Console o il file: password, token, chiavi e credenziali dentro gli URL sono sostituite da "[REDACTED]", i payload di protocollo (byte grezzi, documenti JSON o XML) da "[PROTOCOL PAYLOAD OMITTED]", un messaggio è tagliato a 16 KB e un'eccezione a 64 KB con "…[TRUNCATED]". Nel flusso entrano soltanto le voci di livello Informazione e superiore; il dettaglio verboso, e le voci che un produttore marca come dettaglio diagnostico (chiacchiera di protocollo grezza e ripetitiva), raggiungono soltanto un file di cattura dettagliata. I guasti di comunicazione che si ripetono sono raggruppati dal loro produttore in una riga di primo guasto, in riepiloghi periodici e in una riga di ripristino, così un dispositivo rotto non inonda l'elenco.
Una voce
Ogni riga mostra l'ora del giorno, un punto per il livello (neutro per Info, cautela per Avviso, critico per Errore), "Area · Componente" e il messaggio. Il pulsante Copia riga sul bordo destro di una riga copia "istante completo [Gravità] Area · Componente messaggio" e il registro delle azioni risponde "Riga copiata negli appunti." (oppure "Gli appunti hanno rifiutato la copia." su un browser che nega gli appunti). Un clic sulla riga la seleziona e apre il pannello di dettaglio.
Ricerca
La casella "Cerca nei messaggi e in tutto il contesto disponibile" filtra mentre si digita, senza ritardo. Una riga corrisponde quando il testo è contenuto (senza distinzione fra maiuscole e minuscole) in uno qualsiasi di questi: il messaggio, l'area, il componente, il logger, il dispositivo, il tag, l'operazione, il client, la sessione, l'unità, la procedura, l'id della prova o il testo di dettaglio (un'eccezione e la sua traccia dello stack).
Le pastiglie di livello
Tre pastiglie, Info, Avviso ed Errore, ciascuna un interruttore con un punto nel tono del livello e un conteggio dal vivo. Una pastiglia accesa mostra il proprio livello; premila per nascondere quel livello. Il conteggio è quante voci la pastiglia rivelerebbe con la ricerca, l'area e il componente attuali: rispetta quei tre filtri e ignora gli interruttori di livello stessi, così un livello nascosto dichiara comunque che cosa contiene. Tutte e tre nascono accese.
Non c'è una pastiglia Debug: le voci sotto Informazione non entrano mai nel flusso, quindi una pastiglia per loro potrebbe soltanto dire 0 e non nasconderebbe nulla. Il dettaglio verboso si trova invece in un file di cattura dettagliata.
Gli elenchi Area e Componente
| Elenco | Valori | Che cosa fa |
|---|---|---|
| Area | Tutte le aree (predefinito), poi uno per sottosistema: App, Server, Connector, Logic, Process, Dashboard, Agente, Licenze | Tiene le voci di un solo sottosistema. |
| Componente | Tutti i componenti (predefinito), poi ogni componente presente nel buffer per l'area selezionata, in ordine alfabetico | Tiene le voci di un solo produttore concreto dentro l'area (un driver, un lavoratore, l'SDK OPC UA). |
| Area | Che cosa vi scrive |
|---|---|
| App | Ciclo di vita dell'applicazione: l'ospite desktop, la registrazione, la gestione degli arresti anomali e degli aggiornamenti, i guasti propri del diario degli eventi e tutto ciò che non ha nominato altre aree. |
| Server | Il server OPC UA incorporato e il suo SDK. |
| Connector | Comunicazione con i dispositivi: il connettore, i driver, le letture e le scritture dei tag. |
| Logic | Variabili, azioni, attivatori, allarmi e l'unico punto di scrittura. |
| Process | Modelli, ricette, valutazioni, occorrenze, il sorvegliante dell'interblocco e il ciclo di vita delle prove. |
| Dashboard | I comandi premuti sulle dashboard e l'ospite web incorporato che le serve. |
| Agente | Che cosa ha fatto un agente di intelligenza artificiale attraverso MCP. |
| Licenze | La licenza della stazione e il limitatore del runtime senza licenza. |
Il componente scelto resta nell'elenco anche dopo che ogni voce che lo portava è uscita dal buffer, così un filtro impostato per sorvegliare un solo driver non viene allargato in silenzio a ogni componente; un elenco vuoto è allora la risposta onesta. Cambiare l'area ricostruisce l'elenco dei componenti per quell'area.
Inseguire la coda
Con Insegui la coda (scorrimento automatico) acceso (il valore predefinito), l'elenco resta attaccato alla voce più recente mentre il flusso cresce. Scorrere verso l'alto lo spegne, così si può leggere qualcosa mentre le voci continuano ad arrivare; tornare a meno di 24 pixel dal fondo lo riaccende. Mentre è spento, una pastiglia "N nuove voci" (oppure "1 nuova voce") conta gli arrivi che corrispondono ai filtri attuali; premila, o premi il pulsante della barra dei comandi, per tornare alla coda. Passare a un'altra scheda e tornare conserva lo stato di inseguimento, e salta alla coda se era acceso.
La barra dei comandi
| Comando | Che cosa fa | In grigio quando | Non disegnato quando |
|---|---|---|---|
| Avvia la cattura / Interrompi la cattura | Avvia una cattura diagnostica dettagliata per un massimo di 15 minuti, oppure interrompe quella in corso (vedi sotto). | Mentre l'interruttore viene applicato | Il ruolo non ha Modificare le impostazioni |
| Apri in una finestra | Apre la pagina Eventi in una nuova scheda o finestra del browser, tanto sulla finestra propria della stazione quanto su un browser remoto, così il flusso si può tenere su un secondo monitor. La nuova finestra si apre sulla scheda Console, quella su cui il pulsante sta. Un browser che blocca i pop-up non apre nulla e il registro delle azioni lo dice: "Il browser non ha aperto una seconda finestra. Consenti i pop-up per questa stazione e riprova." | ||
| A capo automatico | Manda a capo i messaggi lunghi su più righe invece di tagliarli. | ||
| Insegui la coda (scorrimento automatico) | Accende l'inseguimento (saltando alla coda e azzerando il conteggio delle nuove voci) oppure lo spegne. | ||
| Svuota la vista | Svuota il flusso in memoria su ogni superficie in una volta: la finestra della stazione, ogni browser remoto e ogni scheda vedono lo stesso elenco vuoto. Il registro delle azioni risponde "Vista della Console svuotata per tutta la stazione." I file di log a rotazione, i file di cattura e il diario degli eventi restano intatti. | Il runtime è fermo: il pulsante è in grigio e il suo suggerimento dice che la stazione non accetta alcuna modifica in questo momento | Il ruolo non ha Modificare le impostazioni |
| Esporta | Apre il menu: Esporta in CSV…, Esporta in JSON… e, dopo un separatore, Crea pacchetto di supporto…. | Crea pacchetto di supporto è in grigio mentre uno è in costruzione | Il ruolo non ha Esportare/importare gli storici |
Cattura dettagliata
Avvia la cattura porta l'intero processo alla registrazione verbosa per un massimo di quindici
minuti e scrive tutto, dettaglio verboso e chiacchiera di protocollo compresi, in un file di cattura
tutto suo: logs\diagnostic-captures\ganter-temporary-diagnostic-<stamp>-<id>.log nella cartella
dati della stazione (una sessione ruota a 25 MB conservando due file; si tengono le dieci sessioni
più recenti). Il flusso di 500 voci e il normale file a rotazione restano esattamente come erano:
niente di più li raggiunge.
Il pulsante allora dice Interrompi la cattura; il suo suggerimento dice "Interrompe in anticipo la cattura diagnostica dettagliata. Avviata hh:mm:ss." La cattura si interrompe da sé quando il conto alla rovescia arriva a zero, quando si preme il pulsante o quando l'applicazione si chiude. I due estremi sono annunciati nel registro delle azioni ("Cattura dettagliata avviata per un massimo di 15 minuti.", "Cattura dettagliata interrotta.") e lasciano righe in Console sotto App · Cattura diagnostica.
La cattura è un interruttore di tutta la stazione: ogni circuito vede lo stesso conto alla rovescia, ed essa sopravvive alla finestra che l'ha premuta. Per questo richiede Modificare le impostazioni: a un ruolo che non lo ha il pulsante non viene disegnato, e una pressione che raggiunga comunque il gestore risponde "Per avviare o interrompere la cattura dettagliata serve il permesso Modificare le impostazioni." Quello che la cattura sta facendo non sta sotto alcun permesso: mentre registra, una lettura accanto al pulsante porta un punto di registrazione, "Cattura dettagliata attiva" e il tempo che le resta (mm:ss, da 15:00), e ogni ruolo la legge. Quando non registra nulla, quella stessa lettura resta ai soli lettori di schermo, che dicono "Cattura dettagliata non attiva".
Crea pacchetto di supporto
L'ultima voce del menu Esporta costruisce uno zip da consegnare all'assistenza e lo scarica
attraverso il browser; il registro delle azioni risponde "Pacchetto di supporto creato:" seguito dal
nome del file (ganter-support-<stamp>-<id>.zip), oppure "Creazione del pacchetto di supporto non
riuscita:" seguita dal motivo. Richiede Esportare/importare gli storici come ogni esportazione.
Il pacchetto contiene:
| Voce | Contenuto |
|---|---|
recent-console.json |
Le voci del flusso in memoria come record strutturati (ogni campo di ogni voce, non la vista filtrata). |
logs/ganter-lab-*.log |
I normali file di log a rotazione. |
diagnostic-captures/ganter-temporary-diagnostic-*.log |
I file di cattura dettagliata. |
manifest.json |
Quando è stato generato, lo stato della cattura (attiva, avviata, fine, arrestata, nome del file), quante voci del flusso sono state incluse, i limiti, l'elenco dei file inclusi con le loro dimensioni e ogni omissione con il suo motivo. |
I file sono presi dal più recente entro un limite: al massimo 8 file, al massimo 24 MB per file e 96 MB in totale; un file più grande della sua quota è incluso solo per la coda (i suoi byte più recenti) e il manifesto lo dice. Lo zip è costruito nella cartella temporanea del sistema ed è eliminato una volta servito lo scaricamento.
Il pannello di dettaglio
Selezionare una voce apre il pannello con il distintivo della gravità, "Area · Componente" e una croce di chiusura, poi:
| Sezione | Campo | Contenuto |
|---|---|---|
| Testata | Istante | Data e ora complete con i millisecondi. |
| Testata | Messaggio | Il messaggio su una riga. |
| CONTESTO | Area | Il sottosistema. |
| CONTESTO | Componente | Il produttore concreto. |
| CONTESTO | Logger | La categoria di logger dietro alla voce, mostrata quando è nota. |
| CONTESTO | Livello | Debug, Informazione, Avviso o Errore. |
| CONTESTO | Dispositivo, Tag, Operazione, Client, Sessione, Unità, Procedura, Prova | Ciascuno mostrato solo quando la voce lo porta: il dispositivo e il tag a cui si riferisce una riga del connettore, l'operazione in esame (una lettura, una scrittura, una connessione), il client e la sessione OPC o di protocollo, e l'unità, la procedura e l'id della prova di Process. |
| DETTAGLI | Il testo dell'eccezione e la traccia dello stack, quando la voce ne portava una. |
Copia voce in fondo copia l'intero pannello come testo (la riga di intestazione, il messaggio, una riga "Etichetta: valore" per campo di contesto, poi il blocco di dettaglio) e risponde "Voce copiata negli appunti." La selezione è abbandonata se la voce esce dal buffer, ed è azzerata da Svuota la vista.
Esportazione
Esporta in CSV… ed Esporta in JSON… scrivono le righe attualmente visibili (la vista
filtrata) come scaricamento del browser di nome app-logs-<yyyyMMdd-HHmmss>.csv o .json; il
registro delle azioni risponde "Esportate N riga/righe in" seguito dal nome del file. I due portano
le stesse colonne, in questo ordine: Timestamp (intestata
"Timestamp (UTC-03:00)" nel CSV, il riferimento temporale dichiarato una volta sola), Severity,
Area, Component, Logger, Device, Tag, Operation, Client, Session, Unit,
Procedure, RunId, Message ed Exception. Il JSON è una busta, { "TimeZone": "...", "Entries": [ ... ] }. Una cella CSV che comincia con =, +, - o @ è preceduta da un apostrofo perché un
foglio di calcolo la legga come testo.
La riga di stato
"N mostrate · M nel buffer", poi " · filtrate" mentre una ricerca, un'area, un componente o un filtro di livello è in vigore; a destra, "1 selezionata" mentre una voce è selezionata e "Aggiornato hh:mm:ss", l'ora dell'ultima voce arrivata. Quando niente corrisponde, l'elenco dice "Nessuna voce corrisponde ai filtri attuali. Modifica il livello, l'area, il componente o la ricerca per vederne di più."
Che cosa Console non fa
- Non è una registrazione: tiene 500 voci in memoria, le perde al riavvio, e Svuota la vista la azzera per tutti. La registrazione duratura sono le tre cronologie e, su disco, i file di log a rotazione.
- Non mostra nulla sotto Informazione, e mai il dettaglio di protocollo; a quello serve una cattura dettagliata.
- Svuota la vista non elimina alcun file né alcuna riga del diario, è rifiutato mentre il runtime è fermo, ed è disegnato solo per un ruolo che può modificare le impostazioni, come Esporta e Avvia la cattura che gli stanno accanto.
- La cattura dettagliata non si può allungare oltre i quindici minuti; avviane un'altra.
- L'esportazione scrive ciò che è visibile, mai i file su disco; il pacchetto di supporto è il modo in cui i file lasciano la stazione.
- Un agente con l'area Logs aperta legge lo stesso flusso attraverso
logs_read(vedi Strumenti); non lo può svuotare.