Class_generator/js/core/websocket-logger.js
StillHammer 1f8688c4aa Fix WebSocket logging system and add comprehensive network features
- Fix WebSocket server to properly broadcast logs to all connected clients
- Integrate professional logging system with real-time WebSocket interface
- Add network status indicator with DigitalOcean Spaces connectivity
- Implement AWS Signature V4 authentication for private bucket access
- Add JSON content loader with backward compatibility to JS modules
- Restore navigation breadcrumb system with comprehensive logging
- Add multiple content formats: JSON + JS with automatic discovery
- Enhance top bar with logger toggle and network status indicator
- Remove deprecated temp-games module and clean up unused files

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-15 23:05:14 +08:00

99 lines
3.2 KiB
JavaScript

// === WEBSOCKET LOGGER ===
// Envoie les logs vers le serveur WebSocket de ton système
console.log('🔧 WebSocket Logger chargé');
// Variables globales
window.wsLogger = null;
window.logQueue = [];
window.isConnected = false;
// Fonction pour se connecter au serveur WebSocket
function connectToLogServer() {
try {
window.wsLogger = new WebSocket('ws://localhost:8082');
window.wsLogger.onopen = function() {
console.log('✅ Connecté au serveur de logs WebSocket');
window.isConnected = true;
// Vider la queue des logs en attente
while (window.logQueue.length > 0) {
const logData = window.logQueue.shift();
window.wsLogger.send(JSON.stringify(logData));
}
};
window.wsLogger.onclose = function() {
console.log('❌ Connexion WebSocket fermée');
window.isConnected = false;
// Tentative de reconnexion après 3 secondes
setTimeout(connectToLogServer, 3000);
};
window.wsLogger.onerror = function(error) {
console.log('❌ Erreur WebSocket:', error);
window.isConnected = false;
};
} catch (error) {
console.log('❌ Impossible de se connecter au serveur de logs:', error);
setTimeout(connectToLogServer, 5000);
}
}
// Fonction logSh qui envoie au WebSocket
window.logSh = function(message, level = 'INFO') {
const timestamp = new Date().toISOString();
const logData = {
timestamp: timestamp,
level: level.toUpperCase(),
message: message
};
// Log aussi dans la console pour backup
const color = level === 'ERROR' ? 'color: red' :
level === 'WARN' ? 'color: orange' :
level === 'DEBUG' ? 'color: blue' : 'color: green';
console.log(`%c[${new Date().toLocaleTimeString()}] ${level}: ${message}`, color);
// Envoyer au WebSocket
if (window.isConnected && window.wsLogger) {
try {
window.wsLogger.send(JSON.stringify(logData));
} catch (error) {
// Si erreur d'envoi, mettre en queue
window.logQueue.push(logData);
}
} else {
// Pas connecté, mettre en queue
window.logQueue.push(logData);
// Limiter la queue à 100 messages
if (window.logQueue.length > 100) {
window.logQueue.shift();
}
}
};
// Fonctions de convenance
window.logTrace = function(message) { window.logSh(message, 'TRACE'); };
window.logDebug = function(message) { window.logSh(message, 'DEBUG'); };
window.logInfo = function(message) { window.logSh(message, 'INFO'); };
window.logWarn = function(message) { window.logSh(message, 'WARN'); };
window.logError = function(message) { window.logSh(message, 'ERROR'); };
// Bouton pour ouvrir l'interface de logs
window.openLogsInterface = function() {
const logsUrl = 'http://localhost:8000/export_logger/logs-viewer.html';
window.open(logsUrl, 'LogsViewer', 'width=1200,height=800,scrollbars=yes,resizable=yes');
};
// Initialisation
connectToLogServer();
// Test initial
window.logSh('🚀 WebSocket Logger initialisé', 'INFO');
console.log('✅ WebSocket Logger prêt - logs envoyés vers ws://localhost:8082');