Files
noteflow/services/timezone-logger.js
Claude 27840c342f 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 !
2025-11-16 17:37:30 +00:00

49 lines
1.1 KiB
JavaScript

// Service de logging en mémoire pour débuguer le timezone
// Les logs sont stockés en mémoire et accessibles via /api/calendar/timezone-logs
class TimezoneLogger {
constructor() {
this.logs = [];
this.maxLogs = 500; // Garder max 500 logs
}
log(category, message, data = null) {
const entry = {
timestamp: new Date().toISOString(),
category,
message,
data: data ? JSON.stringify(data, null, 2) : null
};
this.logs.push(entry);
// Limiter le nombre de logs
if (this.logs.length > this.maxLogs) {
this.logs.shift();
}
// Afficher aussi dans les logs console
console.log(`[${category}] ${message}`, data || '');
}
getLogs(limit = 100) {
return this.logs.slice(-limit).reverse();
}
clearLogs() {
this.logs = [];
}
getLogsByCategory(category, limit = 50) {
return this.logs
.filter(log => log.category === category)
.slice(-limit)
.reverse();
}
}
// Singleton
const timezoneLogger = new TimezoneLogger();
module.exports = timezoneLogger;