Last active
November 24, 2021 18:33
-
-
Save jeremybradbury/827533300a67d52834f04a11caa61106 to your computer and use it in GitHub Desktop.
Log, Log, it's big it's heavy it's wood. Better than bad, it's good
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// a very basic Winston replacement, which combines well with a systemd service, to replace most features | |
const isProd = process.env.NODE_ENV === "production"; | |
const logLog = (level, ...e) => { | |
switch (true) { | |
case e && !!e.find((o) => o.redact): // params contain an object with a key called redact: {redact: true} | |
case isProd && level === "dir": | |
case isProd && level === "log": | |
case isProd && level === "info": | |
case isProd && level === "debug": | |
return; | |
default: | |
console[level](...e); | |
break; | |
} | |
}; | |
const logger = { | |
error: (...e) => logLog("error", ...e), // level 1 | |
redacted: (...e) => logLog("error", { redact: true }, ...e), | |
warn: (...e) => logLog("warn", ...e), // level 2 | |
log: (...e) => logLog("log", ...e), // level 3 | |
info: (...e) => logLog("info", ...e), // level 4 | |
debug: (...e) => logLog("debug", ...e), // level 5 | |
silly: (...e) => logLog("debug", ...e), // level 5 | |
} | |
// full redacted warn example, using core API | |
logLog( | |
"warn", | |
"someFunctionName or some/path/name", | |
new Error("hide internals from prod logs, but level a warning in dev/test"), | |
{redact: true} | |
); | |
// simple error report | |
logger.error("something went wrong"); // console.error with filters | |
// verbose mode | |
logger.debug("someConfigOptions", {isProd, logger}); // console.debug with filters | |
// Thanks John Kricfalusi ;-] | |
// https://www.youtube.com/watch?v=5Y0dGHkAkIY |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment