// node_api/utils/logger.js const fs = require('fs'); const path = require('path'); class Logger { constructor() { this.logDir = path.join(__dirname, '../logs'); this.ensureLogDirectory(); } ensureLogDirectory() { if (!fs.existsSync(this.logDir)) { fs.mkdirSync(this.logDir, { recursive: true }); } } getLogFileName(type = 'general') { const date = new Date().toISOString().split('T')[0]; return path.join(this.logDir, `${type}-${date}.log`); } formatMessage(level, message, data = null) { const timestamp = new Date().toISOString(); const logEntry = { timestamp, level, message, ...(data && { data }) }; return JSON.stringify(logEntry); } writeLog(level, message, data = null, logType = 'general') { const logMessage = this.formatMessage(level, message, data); const logFile = this.getLogFileName(logType); // Write to file fs.appendFileSync(logFile, logMessage + '\n'); // Also log to console console.log(`[${level.toUpperCase()}] ${message}`, data || ''); } info(message, data = null) { this.writeLog('info', message, data); } error(message, data = null) { this.writeLog('error', message, data); } warn(message, data = null) { this.writeLog('warn', message, data); } debug(message, data = null) { this.writeLog('debug', message, data); } job(message, data = null) { this.writeLog('info', message, data, 'jobs'); } depreciation(message, data = null) { this.writeLog('info', message, data, 'depreciation'); } } const logger = new Logger(); module.exports = { logger };