mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-19 21:28:33 +02:00
Add: Système de logs visibles dans le navigateur (sans accès Docker)
NOUVEAU SYSTÈME DE LOGGING: Au lieu d'utiliser les logs Docker (inaccessibles depuis Portainer), création d'un système de logs accessible directement dans le navigateur. FICHIERS AJOUTÉS: 1. services/timezone-logger.js: - Service singleton qui stocke les logs en mémoire - Limite à 500 logs max (pour éviter les fuites mémoire) - Méthodes: log(), getLogs(), clearLogs(), getLogsByCategory() 2. routes/timezone-logs.routes.js: - GET /api/timezone-logs - Logs en JSON - GET /api/timezone-logs/html - Interface web avec design moderne - GET /api/timezone-logs/category/:cat - Filtrer par catégorie - POST /api/timezone-logs/clear - Vider les logs 3. VOIR-LOGS-TIMEZONE.md: - Documentation complète du système - Procédure pas à pas - Explications des logs attendus FICHIERS MODIFIÉS: 1. config/database.js: - Utilise timezoneLogger au lieu de logger.debug - Catégorie: PARSER 2. routes/calendar.routes.js: - Logs avec timezoneLogger lors de la synchronisation - Catégorie: SYNC (synchronisation Google Calendar) - Catégorie: GET (envoi au frontend) 3. server.js: - Ajout de la route /api/timezone-logs INTERFACE WEB DE LOGS: Accessible sur: http://localhost:2222/api/timezone-logs/html Fonctionnalités: - ✅ Design moderne avec dégradés et animations - ✅ Statistiques en temps réel (total, par catégorie) - ✅ Filtrage par catégorie (SYNC, PARSER, GET) - ✅ Auto-refresh toutes les 3 secondes - ✅ Code couleur par catégorie - ✅ Affichage des données JSON formatées - ✅ Bouton pour vider les logs - ✅ Responsive, fonctionne sur mobile UTILISATION: 1. Rebuild: docker-compose build --no-cache notes-app 2. Ouvrir: http://localhost:2222/api/timezone-logs/html 3. Synchroniser Google Calendar 4. Observer les logs en temps réel dans le navigateur Plus besoin d'accès aux logs Docker/Portainer !
This commit is contained in:
6 files changed
+594
-12
No files matched your search
+3
-2
@@ -2,6 +2,7 @@
|
||||
const { Pool, types } = require('pg');
|
||||
const bcrypt = require('bcrypt');
|
||||
const logger = require('./logger');
|
||||
const timezoneLogger = require('../services/timezone-logger');
|
||||
|
||||
// IMPORTANT: Parser personnalisé pour TIMESTAMPTZ
|
||||
// On force PostgreSQL à renvoyer en UTC (options: '-c timezone=UTC')
|
||||
@@ -22,14 +23,14 @@ types.setTypeParser(1184, function(stringValue) {
|
||||
// Si déjà au format ISO avec Z ou timezone (+HH:MM ou +HH)
|
||||
if (stringValue.includes('Z') || stringValue.match(/[+-]\d{2}(:\d{2})?$/)) {
|
||||
result = new Date(stringValue).toISOString();
|
||||
logger.debug(`[PARSER TIMESTAMPTZ] Input avec TZ: "${originalValue}" → Output: "${result}"`);
|
||||
timezoneLogger.log('PARSER', `Input avec TZ: "${originalValue}" → Output: "${result}"`);
|
||||
} else {
|
||||
// Si format "YYYY-MM-DD HH:MM:SS" sans timezone
|
||||
// Comme timezone=UTC, on sait que c'est en UTC
|
||||
// On ajoute 'Z' pour forcer JavaScript à l'interpréter comme UTC
|
||||
const isoString = stringValue.replace(' ', 'T') + 'Z';
|
||||
result = new Date(isoString).toISOString();
|
||||
logger.debug(`[PARSER TIMESTAMPTZ] Input sans TZ: "${originalValue}" → ISO+Z: "${isoString}" → Output: "${result}"`);
|
||||
timezoneLogger.log('PARSER', `Input sans TZ: "${originalValue}" → ISO+Z: "${isoString}" → Output: "${result}"`);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
Reference in new issue
Block a user