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.
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.
Recherche
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.