const fs = require('fs'); const path = require('path'); const LOG_FILE = path.join(process.cwd(), 'application.log'); /** * Format log entry dengan timestamp dan metadata */ const formatLog = (level, context, message, meta = {}) => { const timestamp = new Date().toISOString(); const metaStr = Object.keys(meta).length ? ` | ${JSON.stringify(meta)}` : ''; return `[${timestamp}] [${level}] [${context}] ${message}${metaStr}\n`; }; /** * Write ke file synchronously (simple, no dependencies) * ponytail: pakai sync untuk guarantee write, upgrade to stream jika high volume */ const writeLog = (entry) => { try { fs.appendFileSync(LOG_FILE, entry, 'utf8'); } catch (err) { console.error('[Logger] Failed to write log file:', err.message); } }; module.exports = { logInfo: (context, message, meta = {}) => { const entry = formatLog('INFO', context, message, meta); console.log(entry.trim()); writeLog(entry); }, logError: (context, message, meta = {}) => { const entry = formatLog('ERROR', context, message, meta); console.error(entry.trim()); writeLog(entry); }, logWarn: (context, message, meta = {}) => { const entry = formatLog('WARN', context, message, meta); console.warn(entry.trim()); writeLog(entry); }, };