File size: 1,449 Bytes
58461df |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
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`);
}
// Specialized throttled stats for the console
updateStats(active, queue) {
this.activeCount = active;
this.queueCount = queue;
const now = Date.now();
if (now - this.lastStatusTime > 3000) { // Update console every 3 seconds
this.lastStatusTime = now;
process.stdout.write(`\r[Status] Active: ${active} | Queued: ${queue} | Logs: See app.log `);
}
}
}
module.exports = new Logger();
|