ihm_client/fix-logs.js
NicolasCantu c9ff430b09 Standardize logging system and fix error display
**Motivations :**
- Inconsistent use of console.* methods across codebase
- Missing structured logging with proper levels and context
- Inline error display breaking UI layout
- Risk of sensitive data exposure in logs

**Modifications :**
- Replace all console.* calls with secureLogger.* in main files
- Add proper log levels: DEBUG, INFO, WARN, ERROR
- Add component context for better debugging
- Create styled error/warning/success containers
- Add comprehensive logging guidelines documentation
- Fix import paths for secureLogger in security-setup.ts

**Pages affectées :**
- src/services/service.ts - Main service logging
- src/pages/home/home.ts - Home page logging
- src/pages/security-setup/security-setup.ts - Security setup logging
- src/utils/sp-address.utils.ts - SP address utilities logging
- src/router.ts - Router logging
- src/websockets.ts - WebSocket logging
- src/4nk.css - Error container styles
- docs/LOGGING_GUIDELINES.md - Logging best practices
2025-10-30 00:14:39 +01:00

149 lines
4.6 KiB
JavaScript

#!/usr/bin/env node
/**
* Script pour corriger automatiquement tous les logs console.* en secureLogger
*/
const fs = require('fs');
const path = require('path');
// Fichiers à corriger
const filesToFix = [
'src/pages/home/home.ts',
'src/pages/pairing/pairing.ts',
'src/pages/wallet-setup/wallet-setup.ts',
'src/pages/security-setup/security-setup.ts',
'src/pages/birthday-setup/birthday-setup.ts',
'src/pages/block-sync/block-sync.ts',
'src/utils/sp-address.utils.ts',
'src/router.ts',
'src/websockets.ts'
];
// Fonction pour déterminer le niveau de log
function determineLogLevel(message) {
const lowerMessage = message.toLowerCase();
if (lowerMessage.includes('error') || lowerMessage.includes('failed') || lowerMessage.includes('❌')) {
return 'error';
}
if (lowerMessage.includes('warn') || lowerMessage.includes('⚠️') || lowerMessage.includes('skipping')) {
return 'warn';
}
if (lowerMessage.includes('debug') || lowerMessage.includes('🔍') || lowerMessage.includes('checking')) {
return 'debug';
}
return 'info';
}
// Fonction pour déterminer le contexte
function determineContext(filePath, message) {
const fileName = path.basename(filePath, '.ts');
if (fileName.includes('service')) return 'Service';
if (fileName.includes('home')) return 'HomePage';
if (fileName.includes('pairing')) return 'PairingPage';
if (fileName.includes('wallet')) return 'WalletSetup';
if (fileName.includes('security')) return 'SecuritySetup';
if (fileName.includes('birthday')) return 'BirthdaySetup';
if (fileName.includes('block-sync')) return 'BlockSync';
if (fileName.includes('router')) return 'Router';
if (fileName.includes('websocket')) return 'WebSocket';
if (fileName.includes('sp-address')) return 'SPAddressUtils';
return 'Application';
}
// Fonction pour corriger un fichier
function fixFile(filePath) {
if (!fs.existsSync(filePath)) {
console.log(`⚠️ Fichier non trouvé: ${filePath}`);
return;
}
let content = fs.readFileSync(filePath, 'utf8');
let modified = false;
// Ajouter l'import secureLogger si pas déjà présent
if (!content.includes('import { secureLogger }')) {
const importMatch = content.match(/import.*from.*['"][^'"]+['"];?\s*\n/);
if (importMatch) {
const importIndex = content.lastIndexOf(importMatch[0]) + importMatch[0].length;
content = content.slice(0, importIndex) +
`import { secureLogger } from '../services/secure-logger';\n` +
content.slice(importIndex);
modified = true;
}
}
// Remplacer console.log par secureLogger
content = content.replace(
/console\.log\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/g,
(match, message) => {
const level = determineLogLevel(message);
const context = determineContext(filePath, message);
modified = true;
return `secureLogger.${level}('${message}', { component: '${context}' })`;
}
);
// Remplacer console.warn par secureLogger.warn
content = content.replace(
/console\.warn\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/g,
(match, message) => {
const context = determineContext(filePath, message);
modified = true;
return `secureLogger.warn('${message}', { component: '${context}' })`;
}
);
// Remplacer console.error par secureLogger.error
content = content.replace(
/console\.error\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/g,
(match, message) => {
const context = determineContext(filePath, message);
modified = true;
return `secureLogger.error('${message}', { component: '${context}' })`;
}
);
// Remplacer console.info par secureLogger.info
content = content.replace(
/console\.info\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/g,
(match, message) => {
const context = determineContext(filePath, message);
modified = true;
return `secureLogger.info('${message}', { component: '${context}' })`;
}
);
// Remplacer console.debug par secureLogger.debug
content = content.replace(
/console\.debug\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/g,
(match, message) => {
const context = determineContext(filePath, message);
modified = true;
return `secureLogger.debug('${message}', { component: '${context}' })`;
}
);
if (modified) {
fs.writeFileSync(filePath, content);
console.log(`✅ Corrigé: ${filePath}`);
} else {
console.log(`⏭️ Aucune modification: ${filePath}`);
}
}
// Exécuter les corrections
console.log('🔧 Correction des logs console.* en secureLogger...\n');
filesToFix.forEach(file => {
fixFile(file);
});
console.log('\n✅ Correction terminée !');