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 une trousse de soutien technique pour le dépannage.

Afficher en Markdown

L'onglet Console technique 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 qui se lit en dernier, après les chronologies typées. Le voir demande Voir les événements; exporter des lignes ou créer une trousse de soutien technique 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 le montrent (la fenêtre propre à la station, chaque navigateur distant, chaque onglet). Les entrées plus anciennes sortent à mesure que de nouvelles arrivent; rien de cet onglet ne survit à un redémarrage. Le même flux est écrit dans un fichier glissant quotidien, 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'une trousse de soutien technique recueille.

Chaque entrée est assainie avant d'atteindre Console ou le fichier : les mots de passe, les jetons, les clés et les identifiants contenus dans une 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 reprise, 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 Information, 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 ceux-ci : le message, le domaine, le composant, l'enregistreur, l'équipement, le tag Connector, l'opération, le client OPC UA, le numéro de session, l'unité, la procédure, l'ID d'essai ou le texte de détail (une exception et sa pile d'appels).

Les pastilles de niveau

Trois pastilles, Information, Avertissement et Erreur, chacune un interrupteur avec un point dans la teinte du niveau et un compte en direct. Une pastille activée montre son niveau; cliquez dessus pour cacher ce niveau. Le compte est le nombre d'entrées que la pastille révélerait sous la recherche, le domaine et le composant en cours : il respecte ces trois filtres et ignore les interrupteurs de niveau eux-mêmes, donc un niveau caché annonce tout de même ce qu'il contient. Les trois commencent activées.

Il n'y a pas de pastille Debug : les entrées sous Information n'entrent jamais dans le flux, donc une pastille pour elles n'afficherait jamais que 0 et ne cacherait rien. Le détail verbeux se trouve 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 sélectionné, par ordre alphabétique Ne garde que les entrées d'un producteur concret à l'intérieur du domaine (un pilote, un service, le SDK OPC UA).
Domaine Ce qui y écrit
App Le cycle de vie de l'application : l'hôte de bureau, la journalisation, la gestion des incidents et des mises à jour, les échecs propres au journal d'événements, 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 les écritures de tags.
Logic Les variables, les actions, les déclencheurs, les alarmes et le canal d'écriture.
Process Les modèles, les recettes, les évaluations, les occurrences, le moniteur du verrouillage et le cycle de vie d'un essai.
Tableau de bord Les commandes pressées sur les tableaux de bord, et l'hôte web embarqué qui les sert.
Agent Ce qu'un agent d'intelligence artificielle a fait par MCP.
Licences La licence de la station et le limiteur du runtime sans licence.

Le composant que vous avez choisi demeure dans la liste même après que chaque entrée qui le portait est sortie du tampon, pour qu'un filtre réglé sur un seul pilote ne soit 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, ce qui permet de lire quelque chose pendant que les entrées continuent d'arriver; revenir à moins de 24 pixels du bas le réactive. Pendant qu'il est désactivé, une pastille « N nouvelles entrées » (ou « 1 nouvelle entrée ») compte les arrivées qui correspondent aux filtres en cours; cliquez dessus, ou sur le bouton de la barre de commandes, pour revenir à la fin. Passer à un autre onglet et revenir conserve l'état du suivi, et saute à la fin s'il était activé.

La barre de commandes

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 un maximum de 15 minutes, ou arrête celle qui est en cours (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 une trousse de soutien technique…. Créer une trousse de soutien technique est grisé pendant qu'une trousse est en construction Le rôle n'a pas Exporter/importer les historiques

Capture détaillée

Démarrer la capture hausse tout le processus à la journalisation verbeuse pour un maximum de quinze minutes 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 demeurent 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 son 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 pressez 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 un maximum de 15 minutes. », « Capture détaillée arrêtée. ») et laissent des lignes de Console sous App · Capture de diagnostic.

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 pressé. C'est pourquoi elle demande Modifier les paramètres : un rôle qui ne l'a pas ne se voit pas dessiner le bouton, 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 une trousse de soutien technique

Le dernier élément du menu Exporter construit un zip à remettre au soutien technique et le télécharge par le navigateur; le journal des actions répond « Trousse de soutien technique créée : » suivi du nom du fichier (ganter-support-<stamp>-<id>.zip), ou « Échec de la trousse de soutien technique : » suivi de la raison. Elle demande Exporter/importer les historiques comme tout export. La trousse 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 elle a été produite, l'état de la capture (active, démarrée, fin, arrêtée, nom du fichier), combien d'entrées du flux ont été incluses, les limites, la liste des fichiers inclus avec leur taille, et chaque omission avec sa raison.

Les fichiers sont pris du plus récent au plus ancien à l'intérieur d'un budget : au plus 8 fichiers, au plus 24 MB par fichier et 96 MB en tout; un fichier plus gros que sa part est inclus par sa fin seulement (ses octets les plus récents) et le manifeste le dit. Le zip est construit dans le dossier temporaire du système et supprimé 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 Enregistreur La catégorie de journalisation derrière l'entrée, montrée quand elle est connue.
CONTEXTE Niveau Debug, Information, Avertissement ou Erreur.
CONTEXTE Équipement, Tag Connector, Opération, Client OPC UA, Numéro de session, Unité, Procédure, Essai Chacun montré seulement quand l'entrée le porte : l'équipement et le tag auxquels une ligne de Connector 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'ID d'essai de Process.
DÉTAILS Le texte de l'exception et sa pile d'appels, quand l'entrée en portait une.

Copier l'entrée au pied copie tout le volet en 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.

Export

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 seule 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 en cours. 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 sous Information, et jamais le détail des protocoles; 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 allongée au-delà de quinze minutes; démarrez-en une autre.
  • Exporter écrit ce qui est visible, jamais les fichiers du disque; la trousse de soutien technique est la façon dont les fichiers quittent la station.
  • Un agent dont le domaine Logs est ouvert lit ce même flux par logs_read (voir Outils); il ne peut pas le vider.