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();