const _ = require("lodash") const dayjs = require("dayjs") const colors = require("colors/safe") const fs = require("node:fs/promises") ///////////////////////////////////////////////////////////////////////// module.exports = { debug: msg => log("DEBUG", msg), info: msg => log("INFO", msg), warn: msg => log("WARN", msg), error: msg => log("ERROR", msg), } ///////////////////////////////////////////////////////////////////////// function log (level, msg) { if (!_.isString(msg)) { if (msg.message) { msg = msg.message } else { try { msg = JSON.stringify(msg) } catch (ex) { msg = msg?.toString() } } } level = _.padEnd(level, 5) level = format(level.toLowerCase()) let message = `${level} ${dayjs().format("DD.MM.YYYY HH:mm:ss")} - ${msg}` console.log(message) return fs.appendFile("log.log", message + "\n") } function format (level) { switch (level.trim()) { case "info": return colors.green(level.toUpperCase()) case "warn": return colors.blue(level.toUpperCase()) case "error": return colors.red(level.toUpperCase()) case "debug": return colors.grey(level.toUpperCase()) } return level }