Files
yunrui_asset/backend/scripts/migrate-logs.js
T

137 lines
4.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 日志系统迁移脚本
* 批量将 routes/ 目录中的 console 调用替换为 logger 调用
*/
const fs = require('fs');
const path = require('path');
const routesDir = path.join(__dirname, '../routes');
const files = fs.readdirSync(routesDir).filter(f => f.endsWith('.js'));
let totalReplacements = 0;
files.forEach(file => {
const filePath = path.join(routesDir, file);
let content = fs.readFileSync(filePath, 'utf8');
// 检查是否包含 console 调用
const consoleMatches = content.match(/console\.(log|error|warn|debug)/g);
if (!consoleMatches) {
return;
}
const moduleName = file.replace('.js', '').replace(/^[a-z]/, m => m.toUpperCase()) + 'Route';
// 添加 logger 导入(如果还没有)
if (!content.includes("require('../utils/logger')")) {
// 在文件开头添加 logger 导入
content = `const logger = require('../utils/logger').module('${moduleName}');\n${content}`;
}
// 替换 console.error('xxx:', error) -> logger.error('xxx', { error: error.message, stack: error.stack })
// 替换 console.error('xxx:', error.message) -> logger.error('xxx', { error: error.message })
// 替换 console.error('xxx:', err) -> logger.error('xxx', { error: err.message, stack: err.stack })
// 先处理带有 error 对象的 console.error
content = content.replace(
/console\.error\(['"`](.+?)['"`],\s*(error|err)\);?/g,
(match, msg, varName) => {
totalReplacements++;
// 清理消息末尾的冒号
const cleanMsg = msg.replace(/[:]\s*$/, '').trim();
return `logger.error('${cleanMsg}', { ${varName}: ${varName}.message, stack: ${varName}.stack });`;
}
);
// 处理 console.error('xxx:', error.message)
content = content.replace(
/console\.error\(['"`](.+?)['"`],\s*(error|err)\.message\);?/g,
(match, msg) => {
totalReplacements++;
const cleanMsg = msg.replace(/[:]\s*$/, '').trim();
return `logger.error('${cleanMsg}', { error: error.message });`;
}
);
// 处理 console.error('xxx:', someVar) -> logger.error('xxx', { error: someVar })
content = content.replace(
/console\.error\(['"`](.+?)['"`],\s*([^);]+)\);?/g,
(match, msg, varName) => {
totalReplacements++;
const cleanMsg = msg.replace(/[:]\s*$/, '').trim();
return `logger.error('${cleanMsg}', { error: ${varName.trim()} });`;
}
);
// 处理 console.error('xxx') -> logger.error('xxx')
content = content.replace(
/console\.error\(['"`](.+?)['"`]\);?/g,
(match, msg) => {
totalReplacements++;
return `logger.error('${msg}');`;
}
);
// 处理 console.warn('xxx:', { ... }) -> logger.warn('xxx', { ... })
content = content.replace(
/console\.warn\(['"`](.+?)['"`],\s*\{/g,
(match, msg) => {
totalReplacements++;
const cleanMsg = msg.replace(/[:]\s*$/, '').trim();
return `logger.warn('${cleanMsg}', {`;
}
);
// 处理 console.warn('xxx') -> logger.warn('xxx')
content = content.replace(
/console\.warn\(['"`](.+?)['"`]\);?/g,
(match, msg) => {
totalReplacements++;
return `logger.warn('${msg}');`;
}
);
// 处理 console.log('xxx:', var) -> logger.info('xxx', { var })
content = content.replace(
/console\.log\(['"`](.+?)['"`],\s*([^);]+)\);?/g,
(match, msg, varName) => {
totalReplacements++;
const cleanMsg = msg.replace(/[:]\s*$/, '').trim();
return `logger.info('${cleanMsg}', { data: ${varName.trim()} });`;
}
);
// 处理 console.log('xxx') -> logger.info('xxx')
content = content.replace(
/console\.log\(['"`](.+?)['"`]\);?/g,
(match, msg) => {
totalReplacements++;
return `logger.info('${msg}');`;
}
);
// 处理 console.log(`xxx`) -> logger.info(`xxx`)
content = content.replace(
/console\.log\(`(.+?)`\);?/g,
(match, msg) => {
totalReplacements++;
return `logger.info(\`${msg}\`);`;
}
);
// 处理 console.error(`xxx`) -> logger.error(`xxx`)
content = content.replace(
/console\.error\(`(.+?)`\);?/g,
(match, msg) => {
totalReplacements++;
return `logger.error(\`${msg}\`);`;
}
);
fs.writeFileSync(filePath, content);
console.log(`✓ ${file}: 替换了 ${consoleMatches.length} 处 console 调用`);
});
console.log(`\n总计替换了 ${totalReplacements} 处 console 调用`);