**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
149 lines
4.6 KiB
JavaScript
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 !');
|