Console

Le flux de diagnostic en direct du programme en cours : 500 entrées en mémoire, cherchées et filtrées par niveau, domaine et composant, avec une capture détaillée et un pack de support pour le dépannage.

Afficher en Markdown

L'onglet Console de Événements (/events?view=console) est le flux de diagnostic de tout le programme : chaque sous-système (l'application, le serveur OPC UA embarqué, les pilotes, Logic, Process, les tableaux de bord, l'accès agent et les licences) écrit dans un seul flux, et Console en montre les 500 entrées les plus récentes, en direct. C'est le dernier onglet parce que c'est le détail technique que l'on lit en dernier, après les chronologies typées. Le voir demande Voir les événements ; exporter des lignes ou créer un pack de support demande Exporter/importer les historiques ; démarrer ou arrêter une capture détaillée demande Modifier les paramètres.

Le flux et son tampon

Console est une projection du flux de diagnostic unique du processus, gardée en mémoire : les 500 entrées les plus récentes, partagées par toutes les surfaces qui l'affichent (la fenêtre propre à la station, chaque navigateur distant, chaque onglet). Les entrées plus anciennes tombent à mesure que de nouvelles arrivent ; rien de cet onglet ne survit à un redémarrage. Le même flux est écrit dans un fichier journalier glissant, logs\ganter-lab-<date>.log dans le dossier de données de la station (30 jours conservés, 50 MB par fichier), et c'est ce qu'un pack de support recueille.

Chaque entrée est expurgée avant d'atteindre Console ou le fichier : les mots de passe, jetons, clés et identifiants contenus dans les URL sont remplacés par « [REDACTED] », les charges utiles de protocole (octets bruts, documents JSON ou XML) par « [PROTOCOL PAYLOAD OMITTED] », un message est coupé à 16 KB et une exception à 64 KB avec « …[TRUNCATED] ». Seules les entrées de niveau Information et au-dessus entrent dans le flux ; le détail verbeux, et les entrées qu'un producteur marque comme détail de diagnostic (bavardage de protocole brut et répétitif), n'atteignent qu'un fichier de capture détaillée. Les échecs de communication qui se répètent sont regroupés par leur producteur en une ligne de premier échec, des résumés périodiques et une ligne de rétablissement, pour qu'un équipement en panne n'inonde pas la liste.

Une entrée

Chaque ligne montre l'heure du jour, un point pour le niveau (neutre pour Info, prudence pour Avertissement, critique pour Erreur), « Domaine · Composant » et le message. Le bouton Copier la ligne au bord droit d'une ligne copie « horodatage complet [Gravité] Domaine · Composant message » et le journal des actions répond « Ligne copiée dans le presse-papiers. » (ou « Le presse-papiers a refusé la copie. » sur un navigateur qui retient le presse-papiers). Cliquer sur la ligne la sélectionne et ouvre le volet de détail.

Le champ « Rechercher dans les messages et tout le contexte disponible » filtre à mesure que vous tapez, sans délai. Une ligne correspond quand le texte est contenu (sans distinction de casse) dans l'un de ces éléments : le message, le domaine, le composant, le logger, l'équipement, le tag, l'opération, le client, la session, l'unité, la procédure, l'identifiant de l'essai ou le texte de détail (une exception et sa pile d'appels).

Les pastilles de niveau

Trois pastilles, Info, Avertissement et Erreur, chacune un interrupteur avec un point dans la teinte du niveau et un compte en direct. Une pastille allumée montre son niveau ; cliquez dessus pour masquer ce niveau. Le compte est le nombre d'entrées que la pastille révélerait sous la recherche, le domaine et le composant du moment : il respecte ces trois filtres et ignore les interrupteurs de niveau eux-mêmes, donc un niveau masqué annonce encore ce qu'il détient. Les trois démarrent allumées.

Il n'y a pas de pastille Debug : les entrées en dessous d'Information n'entrent jamais dans le flux, donc une pastille pour elles n'afficherait jamais que 0 et ne masquerait rien. Le détail verbeux se retrouve plutôt dans un fichier de capture détaillée.

Les listes Domaine et Composant

Liste Valeurs Ce qu'elle fait
Domaine Tous les domaines (par défaut), puis un par sous-système : App, Serveur, Connector, Logic, Process, Tableau de bord, Agent, Licences Ne garde que les entrées d'un sous-système.
Composant Tous les composants (par défaut), puis chaque composant présent dans le tampon pour le domaine choisi, par ordre alphabétique Ne garde que les entrées d'un producteur concret à l'intérieur du domaine (un pilote, un worker, le SDK OPC UA).
Domaine Ce qui y écrit
App Le cycle de vie de l'application : l'hôte du bureau, la journalisation, le traitement des plantages et des mises à jour, les échecs du journal d'événements lui-même, et tout ce qui n'a nommé aucun autre domaine.
Serveur Le serveur OPC UA embarqué et son SDK.
Connector La communication avec les équipements : le connecteur, les pilotes, les lectures et écritures de tags.
Logic Variables, actions, déclencheurs, alarmes et l'entonnoir d'écriture.
Process Modèles, recettes, évaluations, occurrences, le superviseur de verrouillage et le cycle de vie d'un essai.
Tableau de bord Les commandes appuyées sur les tableaux de bord, et l'hôte web embarqué qui les sert.
Agent Ce qu'un agent d'IA a fait via MCP.
Licences La licence de la station et le limiteur de runtime non licencié.

Le composant que vous avez choisi reste dans la liste même quand chaque entrée qui le portait est sortie du tampon, donc un filtre réglé pour surveiller un seul pilote n'est pas silencieusement élargi à tous les composants ; une liste vide est alors la réponse honnête. Changer de domaine reconstruit la liste des composants de ce domaine.

Suivre la fin

Avec Suivre la fin (défilement automatique) activé (le réglage par défaut), la liste colle à l'entrée la plus récente à mesure que le flux grandit. Défiler vers le haut le désactive, pour que vous puissiez lire quelque chose pendant que les entrées continuent d'arriver ; revenir à moins de 24 pixels du bas le réactive. Tant qu'il est désactivé, un badge « N nouvelles entrées » (ou « 1 nouvelle entrée ») compte les arrivées qui correspondent aux filtres du moment ; cliquez dessus, ou sur le bouton de la barre d'outils, pour revenir à la fin. Passer sur un autre onglet et revenir conserve l'état du suivi, et saute à la fin s'il était activé.

La barre d'outils

Commande Ce qu'elle fait Grisée quand Non dessinée quand
Démarrer la capture / Arrêter la capture Démarre une capture de diagnostic détaillée pour quinze minutes au plus, ou arrête celle qui tourne (voir plus bas). Pendant que le changement est appliqué Le rôle n'a pas Modifier les paramètres
Ouvrir dans une fenêtre Ouvre la page Événements dans un nouvel onglet ou une nouvelle fenêtre du navigateur, aussi bien dans la fenêtre propre à la station que dans un navigateur distant, pour garder le flux sur un second écran. La nouvelle fenêtre s'ouvre sur l'onglet Console, celui où se trouve le bouton. Un navigateur qui bloque les fenêtres surgissantes n'ouvre rien et le journal des actions le dit : « Le navigateur n'a pas voulu ouvrir une seconde fenêtre. Autorisez les fenêtres surgissantes pour cette station et réessayez. »
Retour à la ligne Renvoie les messages longs sur plusieurs lignes au lieu de les tronquer.
Suivre la fin (défilement automatique) Active le suivi (en sautant à la fin et en effaçant le compte de nouvelles entrées) ou le désactive.
Vider la vue Vide le flux en mémoire sur toutes les surfaces à la fois : la fenêtre de la station, chaque navigateur distant et chaque onglet voient la même liste vide. Le journal des actions répond « Vue de la console vidée pour toute la station. » Les fichiers journaux glissants, les fichiers de capture et le journal d'événements ne sont pas touchés. Le runtime est arrêté : le bouton est grisé, et son infobulle dit que la station n'accepte aucune modification pour l'instant Le rôle n'a pas Modifier les paramètres
Exporter Ouvre le menu : Exporter en CSV…, Exporter en JSON… et, après un séparateur, Créer un pack de support…. Créer un pack de support est grisé pendant qu'un pack est en construction Le rôle n'a pas Exporter/importer les historiques

Capture détaillée

Démarrer la capture élève tout le processus à la journalisation verbeuse pour quinze minutes au plus et écrit tout, détail verbeux et bavardage de protocole compris, dans un fichier de capture qui lui est propre : logs\diagnostic-captures\ganter-temporary-diagnostic-<stamp>-<id>.log dans le dossier de données de la station (une session bascule à 25 MB en gardant deux fichiers ; les dix sessions les plus récentes sont conservées). Le flux de 500 entrées et le fichier glissant normal restent exactement tels qu'ils étaient : rien de plus ne les atteint.

Le bouton indique alors Arrêter la capture ; son infobulle dit « Arrêter la capture de diagnostic détaillée avant terme. Démarrée hh:mm:ss. » La capture s'arrête d'elle-même quand le compte à rebours atteint zéro, quand vous appuyez sur le bouton, ou quand l'application se ferme. Les deux extrémités sont annoncées dans le journal des actions (« Capture détaillée démarrée pour 15 minutes au plus. », « Capture détaillée arrêtée. ») et laissent des lignes de Console sous App · Diagnostic capture.

La capture est un interrupteur qui vaut pour toute la station : chaque circuit voit le même compte à rebours, et elle survit à la fenêtre qui l'a lancée. C'est pourquoi elle demande Modifier les paramètres : le bouton n'est pas dessiné pour un rôle qui ne l'a pas, et un appui qui atteindrait tout de même le traitement répond « Démarrer ou arrêter la capture détaillée demande la permission Modifier les paramètres. » Ce que la capture fait ne dépend d'aucune permission : pendant qu'elle enregistre, un affichage à côté du bouton porte un point d'enregistrement, « Capture détaillée active » et le temps qu'il lui reste (mm:ss, à partir de 15:00), et tous les rôles le lisent. Quand rien n'enregistre, ce même affichage est laissé au lecteur d'écran, qui indique « Capture détaillée inactive ».

Créer un pack de support

Le dernier élément du menu Exporter construit une archive zip à remettre au support et la télécharge par le navigateur ; le journal des actions répond « Pack de support créé : » suivi du nom du fichier (ganter-support-<stamp>-<id>.zip), ou « Échec du pack de support : » suivi de la raison. Il demande Exporter/importer les historiques comme tout export. Le pack contient :

Entrée Contenu
recent-console.json Les entrées du flux en mémoire sous forme d'enregistrements structurés (chaque champ de chaque entrée, pas la vue filtrée).
logs/ganter-lab-*.log Les fichiers journaux glissants normaux.
diagnostic-captures/ganter-temporary-diagnostic-*.log Les fichiers de capture détaillée.
manifest.json Quand il a été généré, l'état de la capture (active, démarrée, fin, arrêtée, nom de fichier), combien d'entrées du flux ont été incluses, les limites, la liste des fichiers inclus avec leurs tailles, et chaque omission avec sa raison.

Les fichiers sont pris du plus récent au plus ancien dans un budget : 8 fichiers au plus, 24 MB par fichier au plus et 96 MB au total ; un fichier plus gros que sa part est inclus par sa seule fin (ses octets les plus récents) et le manifeste le dit. L'archive est construite dans le dossier temporaire du système et supprimée une fois le téléchargement servi.

Le volet de détail

Sélectionner une entrée ouvre le volet avec le badge de gravité, « Domaine · Composant » et une croix de fermeture, puis :

Section Champ Contenu
En-tête Horodatage Date et heure complètes avec les millisecondes.
En-tête Message Le message d'une ligne.
CONTEXTE Domaine Le sous-système.
CONTEXTE Composant Le producteur concret.
CONTEXTE Logger La catégorie de logger derrière l'entrée, affichée quand elle est connue.
CONTEXTE Niveau Debug, Information, Avertissement ou Erreur.
CONTEXTE Équipement, Tag, Opération, Client, Session, Unité, Procédure, Essai Chacun affiché seulement quand l'entrée le porte : l'équipement et le tag auxquels une ligne du connecteur se rapporte, l'opération diagnostiquée (une lecture, une écriture, une connexion), le client et la session OPC ou de protocole, et l'unité, la procédure et l'identifiant d'essai de Process.
DÉTAILS Le texte de l'exception et la pile d'appels, quand l'entrée en portait une.

Copier l'entrée au pied du volet copie tout le volet sous forme de texte (la ligne d'en-tête, le message, une ligne « Libellé : valeur » par champ de contexte, puis le bloc de détail) et répond « Entrée copiée dans le presse-papiers. » La sélection est abandonnée si l'entrée sort du tampon, et effacée par Vider la vue.

Exporter

Exporter en CSV… et Exporter en JSON… écrivent les lignes actuellement visibles (la vue filtrée) sous forme de téléchargement du navigateur, nommé app-logs-<yyyyMMdd-HHmmss>.csv ou .json ; le journal des actions répond « N ligne(s) exportée(s) vers » suivi du nom du fichier. Les deux portent les mêmes colonnes, dans cet ordre : Timestamp (intitulée « Timestamp (UTC-03:00) » dans le CSV, la référence de temps déclarée une fois), Severity, Area, Component, Logger, Device, Tag, Operation, Client, Session, Unit, Procedure, RunId, Message et Exception. Le JSON est une enveloppe, { "TimeZone": "...", "Entries": [ ... ] }. Une cellule CSV qui commence par =, +, - ou @ est préfixée d'une apostrophe pour qu'un tableur la lise comme du texte.

La ligne d'état

« N affichées · M dans le tampon », puis « · filtré » tant qu'une recherche, un domaine, un composant ou un filtre de niveau est en vigueur ; à droite, « 1 sélectionnée » tant qu'une entrée est sélectionnée et « Mise à jour hh:mm:ss », l'heure de la dernière entrée arrivée. Quand rien ne correspond, la liste indique « Aucune entrée ne correspond aux filtres actuels. Ajustez le niveau, le domaine, le composant ou la recherche pour en voir davantage. »

Ce que Console ne fait pas

  • Ce n'est pas un registre : elle garde 500 entrées en mémoire, les perd au redémarrage, et Vider la vue la vide pour tout le monde. Le registre durable, ce sont les trois chronologies et, sur le disque, les fichiers journaux glissants.
  • Elle ne montre rien en dessous d'Information, et jamais le détail du protocole ; c'est à cela que sert une capture détaillée.
  • Vider la vue ne supprime aucun fichier ni aucune ligne du journal, est refusé tant que le runtime est arrêté, et n'est dessiné que pour un rôle qui peut modifier les paramètres, comme Exporter et Démarrer la capture à côté.
  • La capture détaillée ne peut pas être prolongée au-delà de quinze minutes ; démarrez-en une autre.
  • Exporter écrit ce qui est visible, jamais les fichiers du disque ; le pack de support est la façon dont les fichiers quittent la station.
  • Un agent dont le domaine Logs est ouvert lit le même flux par logs_read (voir Outils) ; il ne peut pas le vider.