summaryrefslogtreecommitdiff
path: root/graphs/js/modularLogger/modularLogger.js
blob: b22b23c13481c136f85ab4dd62fba0799b77078a (plain)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
function makeLog(date, nameLogLevel, message) {
    return (
        "[" +
        date.toLocaleString("fr-FR", { timeStyle: "medium" }) +
        "][" +
        nameLogLevel +
        "] - " +
        message
    );
}
function loggerFactory() {
    const logs = [];

    return (level = 1000) => {
        if (level === 1000) {
            return (date, nameLogLevel, message) => {
                if (
                    !["DEBUG", "INFO", "WARN", "ERROR"].includes(nameLogLevel)
                ) {
                    console.log(
                        nameLogLevel +
                            " is an invalid log level. Please use one of the following: DEBUG, INFO, WARN, ERROR.",
                    );
                } else {
                    logs.push({
                        date: date,
                        nameLogLevel: nameLogLevel,
                        message: message,
                    });
                }
            };
        } else if (typeof level !== "number" || level < 0) {
            console.log("Bad argument.");
        } else {
            if (level > 3) {
                level = 3;
            }

            for (const log of logs) {
                const print = makeLog(
                    log["date"],
                    log["nameLogLevel"],
                    log["message"],
                );

                switch (log["nameLogLevel"]) {
                    case "ERROR":
                        console.log(print);
                        break;
                    case "WARN":
                        if (level > 0) {
                            console.log(print);
                        }

                        break;
                    case "INFO":
                        if (level > 1) {
                            console.log(print);
                        }

                        break;
                    case "DEBUG":
                        if (level > 2) {
                            console.log(print);
                        }

                        break;
                }
            }
        }
    };
}

module.exports = {
    loggerFactory,
};