|
1 | 1 | # Page Logs (/logs) |
2 | 2 |
|
3 | | -**Statut** : 📋 Planifié |
| 3 | +**Statut** : Implemente v2.42.0 |
4 | 4 |
|
5 | 5 | ## Description |
6 | 6 |
|
7 | 7 | Une page `/logs` dans l'interface admin pour afficher les logs du serveur en temps réel. Cette page permet à l'animateur et aux administrateurs de surveiller l'activité du serveur, diagnostiquer les problèmes et comprendre le flux des événements. |
8 | 8 |
|
9 | 9 | ## Objectifs |
10 | 10 |
|
11 | | -- [ ] Afficher les logs du serveur Go en temps réel via WebSocket |
12 | | -- [ ] Filtrer les logs par niveau (DEBUG, INFO, WARN, ERROR) |
13 | | -- [ ] Filtrer les logs par composant (Engine, HTTP, WebSocket, TCP) |
14 | | -- [ ] Permettre la recherche dans les logs |
15 | | -- [ ] Auto-scroll avec pause au survol |
16 | | -- [ ] Export des logs visibles |
| 11 | +- [x] Afficher les logs du serveur Go en temps réel via WebSocket |
| 12 | +- [x] Filtrer les logs par niveau (DEBUG, INFO, WARN, ERROR) |
| 13 | +- [x] Filtrer les logs par composant (Engine, HTTP, WebSocket, TCP, UDP, App) |
| 14 | +- [x] Permettre la recherche dans les logs |
| 15 | +- [x] Auto-scroll avec pause au survol |
| 16 | +- [x] Export des logs visibles |
17 | 17 |
|
18 | 18 | ## Architecture |
19 | 19 |
|
@@ -59,60 +59,61 @@ Page admin avec affichage des logs en temps réel. |
59 | 59 |
|
60 | 60 | ### Phase 1 - Backend (v2.42.0) |
61 | 61 |
|
62 | | -- [ ] **LogBuffer** : Buffer circulaire pour stocker les derniers 1000 logs |
| 62 | +- [x] **LogBuffer** : Buffer circulaire pour stocker les derniers 1000 logs |
63 | 63 | - Struct `LogEntry` : Timestamp, Level, Component, Message |
64 | 64 | - Thread-safe avec mutex |
65 | 65 | - Méthode `GetRecent(n int)` pour récupérer les n derniers logs |
66 | 66 |
|
67 | | -- [ ] **LogBroadcaster** : Broadcast des logs vers les clients WebSocket |
| 67 | +- [x] **LogBroadcaster** : Broadcast des logs vers les clients WebSocket |
68 | 68 | - Canal Go pour recevoir les nouveaux logs |
69 | 69 | - Action WebSocket `LOG_ENTRY` pour envoyer un log |
70 | 70 | - Action WebSocket `LOG_HISTORY` pour envoyer l'historique initial |
71 | 71 |
|
72 | | -- [ ] **Intégration CustomLogger** : Connecter le logger existant au buffer |
| 72 | +- [x] **Intégration CustomLogger** : Connecter le logger existant au buffer |
73 | 73 | - Hook pour capturer chaque log |
74 | 74 | - Parsing du niveau et du composant |
75 | 75 |
|
76 | | -- [ ] **Action WebSocket SUBSCRIBE_LOGS** : Client demande à recevoir les logs |
77 | | - - Envoie l'historique récent (100 derniers) |
| 76 | +- [x] **Action WebSocket SUBSCRIBE_LOGS** : Client demande à recevoir les logs |
| 77 | + - Envoie l'historique récent (tous les logs du buffer) |
78 | 78 | - Ajoute le client à la liste des abonnés |
79 | 79 |
|
80 | | -- [ ] **Action WebSocket UNSUBSCRIBE_LOGS** : Client arrête de recevoir les logs |
| 80 | +- [x] **Action WebSocket UNSUBSCRIBE_LOGS** : Client arrête de recevoir les logs |
81 | 81 | - Retire le client de la liste des abonnés |
82 | 82 |
|
83 | 83 | ### Phase 2 - Frontend (v2.42.0) |
84 | 84 |
|
85 | | -- [ ] **LogsPage.jsx** : Page principale d'affichage des logs |
| 85 | +- [x] **LogsPage.jsx** : Page principale d'affichage des logs |
86 | 86 | - Route `/admin/logs` et `/anim/logs` |
87 | 87 | - Connexion WebSocket pour recevoir les logs |
88 | | - - État local pour stocker les logs reçus (max 5000) |
| 88 | + - État local pour stocker les logs reçus |
89 | 89 |
|
90 | | -- [ ] **Composant LogEntry** : Affichage d'une ligne de log |
| 90 | +- [x] **Composant LogEntry** : Affichage d'une ligne de log |
91 | 91 | - Couleur selon le niveau (DEBUG=gris, INFO=blanc, WARN=orange, ERROR=rouge) |
92 | 92 | - Badge coloré pour le composant |
93 | 93 | - Timestamp formaté (HH:MM:SS.mmm) |
94 | 94 | - Message avec highlight de la recherche |
95 | 95 |
|
96 | | -- [ ] **Filtres de niveau** : Boutons toggle pour chaque niveau |
| 96 | +- [x] **Filtres de niveau** : Boutons toggle pour chaque niveau |
97 | 97 | - DEBUG, INFO, WARN, ERROR |
98 | 98 | - Filtrage côté client (tous les logs reçus, filtrés à l'affichage) |
99 | 99 |
|
100 | | -- [ ] **Filtre de composant** : Dropdown pour filtrer par composant |
101 | | - - Options : Tous, Engine, HTTP, WebSocket, TCP, UDP |
102 | | - - Extraction automatique des composants depuis les logs |
| 100 | +- [x] **Filtre de composant** : Boutons toggle pour filtrer par composant |
| 101 | + - Options : App, Engine, HTTP, WebSocket, TCP, UDP |
| 102 | + - Sélection multiple |
103 | 103 |
|
104 | | -- [ ] **Recherche** : Input de recherche temps réel |
| 104 | +- [x] **Recherche** : Input de recherche temps réel |
105 | 105 | - Filtre sur le message du log |
106 | 106 | - Highlight des termes trouvés |
107 | 107 | - Debounce 300ms |
108 | 108 |
|
109 | | -- [ ] **Auto-scroll** : Scroll automatique vers le bas |
110 | | - - Checkbox pour activer/désactiver |
| 109 | +- [x] **Auto-scroll** : Scroll automatique vers le bas |
| 110 | + - Bouton pour activer/désactiver |
111 | 111 | - Pause automatique si l'utilisateur scroll manuellement |
112 | 112 | - Reprise si scroll en bas |
| 113 | + - Indicateur visuel pour nouveaux logs |
113 | 114 |
|
114 | | -- [ ] **Export** : Bouton pour exporter les logs visibles |
115 | | - - Format texte avec timestamp |
| 115 | +- [x] **Export** : Bouton pour exporter les logs visibles |
| 116 | + - Format texte avec timestamp ISO |
116 | 117 | - Téléchargement fichier `.log` |
117 | 118 |
|
118 | 119 | ### Phase 3 - Améliorations (v2.43.0) |
|
0 commit comments