From a259ee8da28667bb7ad951c2c2d5d28692655cb7 Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Sun, 22 Aug 2021 14:20:49 -0600 Subject: [PATCH] write own logger since npmlog wants to add in "node-pre-gyp" onto every line --- package.json | 1 - pnpm-lock.yaml | 10 ++--- src/index.js | 33 ++++++++------- src/lib/commandDispatcher.js | 2 +- src/lib/events.js | 2 +- src/lib/logger.js | 78 ++++++++++++++++++++++++++++++++++++ src/lib/timer.js | 2 +- src/modules/bot.js | 4 +- 8 files changed, 103 insertions(+), 29 deletions(-) create mode 100644 src/lib/logger.js diff --git a/package.json b/package.json index 49a91ab..7ce5590 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,6 @@ "jimp": "^0.16.1", "murmurhash": "^2.0.0", "node-fetch": "^2.6.1", - "npmlog": "^4.1.2", "sharp": "^0.28.3", "sqlite3": "^5.0.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e89a924..820cc3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,6 @@ specifiers: jimp: ^0.16.1 murmurhash: ^2.0.0 node-fetch: ^2.6.1 - npmlog: ^4.1.2 prettier: ^2.3.0 sharp: ^0.28.3 sqlite3: ^5.0.2 @@ -16,11 +15,10 @@ specifiers: dependencies: colorcolor: 1.1.1 dumpy: github.com/Cynosphere/dumpy.js/5fc22353cdcb97084bab572266390e780d9f7a7b - eris: github.com/abalabahaha/eris/4bb65f07114b01bf52e0ad2eac6a494fad45616e + eris: github.com/abalabahaha/eris/53da0d5111cb884bffd2f2c1d0d5674a98558c26 jimp: 0.16.1 murmurhash: 2.0.0 node-fetch: 2.6.1 - npmlog: 4.1.2 sharp: 0.28.3 sqlite3: 5.0.2 @@ -2258,10 +2256,10 @@ packages: node-fetch: 2.6.1 dev: false - github.com/abalabahaha/eris/4bb65f07114b01bf52e0ad2eac6a494fad45616e: - resolution: {tarball: https://codeload.github.com/abalabahaha/eris/tar.gz/4bb65f07114b01bf52e0ad2eac6a494fad45616e} + github.com/abalabahaha/eris/53da0d5111cb884bffd2f2c1d0d5674a98558c26: + resolution: {tarball: https://codeload.github.com/abalabahaha/eris/tar.gz/53da0d5111cb884bffd2f2c1d0d5674a98558c26} name: eris - version: 0.15.2-dev + version: 0.16.0-dev engines: {node: '>=10.4.0'} dependencies: ws: 7.5.3 diff --git a/src/index.js b/src/index.js index 3fe97a1..14d13d6 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,5 @@ const Eris = require("eris"); -const logger = require("npmlog"); -logger.level = "verbose"; +const logger = require("./lib/logger.js"); const fs = require("fs"); const {resolve} = require("path"); const sqlite3 = require("sqlite3"); @@ -29,9 +28,9 @@ function registerCommand(cmdObj) { const aliases = cmdObj.getAliases(); logger.info( "hf:cmd", - "Registered command '%s'%s", - cmdObj.name, - aliases.length > 0 ? ` (aliases: ${aliases.join(", ")})` : "" + `Registered command '${cmdObj.name}'${ + aliases.length > 0 ? ` (aliases: ${aliases.join(", ")})` : "" + }` ); } } @@ -51,7 +50,7 @@ const CommandDispatcher = require("./lib/commandDispatcher.js"); for (const file of fs.readdirSync(resolve(__dirname, "modules"))) { require(resolve(__dirname, "modules", file)); - logger.info("hf:modules", "Loaded module: '%s'", file); + logger.info("hf:modules", `Loaded module: '${file}'`); } bot.on("messageCreate", async (msg) => { @@ -77,10 +76,7 @@ bot.on("ready", async () => { logger.info("hf:main", "Connected to Discord."); logger.info( "hf:main", - "Logged in as: %s#%s (%s)", - bot.user.username, - bot.user.discriminator, - bot.user.id + `Logged in as: ${bot.user.username}#${bot.user.discriminator} (${bot.user.id})` ); const channel = await bot.getDMChannel(config.owner_id); @@ -90,26 +86,29 @@ bot.on("ready", async () => { }); bot.on("error", (err) => { - logger.error("hf:main", "Catching error:", err); + logger.error("hf:main", "Catching error: " + err); }); bot.on("warn", (err) => { - logger.warn("hf:main", "Catching warn:", err); + logger.warn("hf:main", "Catching warn: " + err); }); bot.on("shardDisconnect", (err, id) => { - logger.verbose("hf:shard", "Disconnecting from shard %s: %s", id, err); + logger.verbose("hf:shard", `Disconnecting from shard ${id}: ${err}`); }); bot.on("shardResume", (id) => { - logger.verbose("hf:shard", "Resuming shard %s", id); + logger.verbose("hf:shard", "Resuming on shard " + id); }); bot.on("shardPreReady", (id) => { - logger.verbose("hf:shard", "Shard %s getting ready", id); + logger.verbose("hf:shard", `Shard ${id} getting ready`); }); bot.on("shardReady", (id) => { - logger.verbose("hf:shard", "Shard %s ready", id); + logger.verbose("hf:shard", `Shard ${id} ready`); }); bot.on("unknown", (packet, id) => { - logger.verbose("hf:main", "Shard %s caught unknown packet: %j", id, packet); + logger.verbose( + "hf:main", + `Shard ${id} caught unknown packet: ${JSON.stringify(packet)}` + ); }); bot.connect(); diff --git a/src/lib/commandDispatcher.js b/src/lib/commandDispatcher.js index 46d1e17..6f00303 100644 --- a/src/lib/commandDispatcher.js +++ b/src/lib/commandDispatcher.js @@ -1,4 +1,4 @@ -const logger = require("npmlog"); +const logger = require("./logger.js"); const {pastelize, getTopColor} = require("./utils.js"); function parseArguments(str) { diff --git a/src/lib/events.js b/src/lib/events.js index 9dc15f4..fbaeee5 100644 --- a/src/lib/events.js +++ b/src/lib/events.js @@ -1,4 +1,4 @@ -const logger = require("npmlog"); +const logger = require("./logger.js"); const eventTable = {}; diff --git a/src/lib/logger.js b/src/lib/logger.js new file mode 100644 index 0000000..5b22e66 --- /dev/null +++ b/src/lib/logger.js @@ -0,0 +1,78 @@ +const ESCAPE = "\x1b"; + +const NORMAL = "[3"; +const BRIGHT = "[9"; +const NORMAL_BG = "[4"; +const BRIGHT_BG = "[10"; + +const NAMES = [ + "Black", + "Red", + "Green", + "Yellow", + "Blue", + "Magenta", + "Cyan", + "White", +]; + +const COLORS = {}; +for (const index in NAMES) { + COLORS[NAMES[index].toUpperCase()] = index; +} + +COLORS.DEFAULT = 9; + +function color(name, bright = false, bg = false) { + name = name.toUpperCase(); + + let out = "" + ESCAPE; + if (bg) { + if (bright && name != "DEFAULT") { + out += BRIGHT_BG; + } else { + out += NORMAL_BG; + } + } else { + if (bright && name != "DEFAULT") { + out += BRIGHT; + } else { + out += NORMAL; + } + } + + out += COLORS[name] + "m"; + + return out; +} + +const LEVEL_COLORS = { + silly: ["magenta", true], + verbose: ["green", true], + debug: ["cyan", true], + log: ["blue", false], + info: ["blue", false], + warn: ["yellow", false], + error: ["red", false], +}; + +function baseLogger(prefix, level, message) { + level = level || "info"; + + let out = ""; + + const [col, bright] = LEVEL_COLORS[level]; + out += `${color(col, bright)}[${level.toUpperCase()}] `; + + out += `${color("magenta")}[${prefix}] ${color("default")}`; + + out += message; + + console.log(out); +} + +module.exports = {}; +for (const level in LEVEL_COLORS) { + module.exports[level] = (prefix, message) => + baseLogger(prefix, level, message); +} diff --git a/src/lib/timer.js b/src/lib/timer.js index 5d5bc95..5924369 100644 --- a/src/lib/timer.js +++ b/src/lib/timer.js @@ -1,4 +1,4 @@ -const logger = require("npmlog"); +const logger = require("./logger.js"); const timerTable = {}; diff --git a/src/modules/bot.js b/src/modules/bot.js index 6dc5891..7006618 100644 --- a/src/modules/bot.js +++ b/src/modules/bot.js @@ -1,7 +1,7 @@ const Command = require("../lib/command.js"); const CATEGORY = "bot"; -const logger = require("npmlog"); +const logger = require("../lib/logger.js"); const child_process = require("child_process"); const {inspect} = require("util"); const {resolve} = require("path"); @@ -57,7 +57,7 @@ reload.callback = function (msg, line) { } try { - logger.info("hf:modules", "Reloading module: '%s'", line); + logger.info("hf:modules", `Reloading module: '${line}'`); delete require.cache[require.resolve(`./${line}.js`)]; require(`./${line}.js`); return {reaction: "\uD83D\uDC4C"};