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, };