luadao / logger.js
vipsphi's picture
Upload 11 files
58461df verified
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();