|
|
const fs = require('fs');
|
|
|
const path = require('path');
|
|
|
|
|
|
const logFile = path.join(__dirname, 'app.log');
|
|
|
const logStream = fs.createWriteStream(logFile, { flags: 'a' });
|
|
|
|
|
|
class Logger {
|
|
|
constructor() {
|
|
|
this.queueCount = 0;
|
|
|
this.activeCount = 0;
|
|
|
this.lastStatusTime = 0;
|
|
|
}
|
|
|
|
|
|
info(msg) {
|
|
|
this.writeToFile(`[INFO] ${msg}`);
|
|
|
console.log(`[${new Date().toLocaleTimeString()}] INFO: ${msg}`);
|
|
|
}
|
|
|
|
|
|
warn(msg) {
|
|
|
this.writeToFile(`[WARN] ${msg}`);
|
|
|
console.warn(`[${new Date().toLocaleTimeString()}] WARN: ${msg}`);
|
|
|
}
|
|
|
|
|
|
error(msg) {
|
|
|
this.writeToFile(`[ERROR] ${msg}`);
|
|
|
console.error(`[${new Date().toLocaleTimeString()}] ERROR: ${msg}`);
|
|
|
}
|
|
|
|
|
|
debug(msg) {
|
|
|
this.writeToFile(`[DEBUG] ${msg}`);
|
|
|
}
|
|
|
|
|
|
writeToFile(msg) {
|
|
|
const timestamp = new Date().toISOString();
|
|
|
logStream.write(`[${timestamp}] ${msg}\n`);
|
|
|
}
|
|
|
|
|
|
|
|
|
updateStats(active, queue) {
|
|
|
this.activeCount = active;
|
|
|
this.queueCount = queue;
|
|
|
|
|
|
const now = Date.now();
|
|
|
if (now - this.lastStatusTime > 3000) {
|
|
|
this.lastStatusTime = now;
|
|
|
process.stdout.write(`\r[Status] Active: ${active} | Queued: ${queue} | Logs: See app.log `);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
module.exports = new Logger();
|
|
|
|