const fs = require('fs'); const path = require('path'); const pino = require('pino'); const LOG_FILE = path.join(__dirname, '..', 'compress.log'); const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: process.env.NODE_ENV !== 'production' ? { target: 'pino/file', options: { destination: 1 }, } : undefined, }); const MAX_LOG_BYTES = 5 * 1024 * 1024; // rotate at 5MB, keep one previous file function logToFile(text) { const ts = new Date().toISOString(); const line = `[${ts}] ${text}\n`; fs.stat(LOG_FILE, (statErr, st) => { if (!statErr && st.size > MAX_LOG_BYTES) { try { fs.renameSync(LOG_FILE, LOG_FILE + '.1'); } catch {} } fs.appendFile(LOG_FILE, line, (err) => { if (err) logger.warn({ error: err.message }, 'logToFile failed'); }); }); } module.exports = { info: (msg, meta) => meta ? logger.info(meta, msg) : logger.info(msg), warn: (msg, meta) => meta ? logger.warn(meta, msg) : logger.warn(msg), error: (msg, meta) => meta ? logger.error(meta, msg) : logger.error(msg), debug: (msg, meta) => meta ? logger.debug(meta, msg) : logger.debug(msg), logToFile, logger, };