feat(logging): replace 207 console.log/error/warn with pino structured logger (#58)

- Add pino + pino-pretty dependencies
- Create src/utils/logger.js with env-based LOG_LEVEL
- Replace all 207 console.log/error/warn calls across 46 source files
- Remove [DEBUG], [ERROR] string prefixes (levels convey this)
- Add pino redact for sensitive fields (mnemonic, privateKey, token, etc.)
- Structured logging with context objects instead of string interpolation
- NODE_ENV=production disables pino-pretty transport

49 files changed, 5601 insertions, 6056 deletions
This commit is contained in:
NW
2026-06-22 01:42:47 +01:00
parent ba80784ae7
commit ce1b6003cb
49 changed files with 5624 additions and 6079 deletions

View File

@@ -1,6 +1,8 @@
import logger from './logger.js';
export default class ErrorHandler {
static async handleError(bot, chatId, error, context) {
console.error(`Error in ${context}:`, error);
logger.error({ err: error, context }, 'Error in handler');
const errorMessage = process.env.NODE_ENV === 'development'
? `Error: ${error.message}`
@@ -9,16 +11,16 @@ export default class ErrorHandler {
try {
await bot.sendMessage(chatId, errorMessage);
} catch (sendError) {
console.error('Error sending error message:', sendError);
logger.error({ err: sendError }, 'Error sending error message');
}
}
static handlePollingError(error) {
if (error.code === 'ETELEGRAM') {
console.error('Telegram API Error:', error.message);
logger.error({ err: error }, 'Telegram API Error');
process.exit(1);
} else {
console.error('Polling error:', error);
logger.error({ err: error }, 'Polling error');
}
}
}