diff options
author | EuAndreh <eu@euandre.org> | 2024-02-25 06:46:52 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-02-25 06:46:52 -0300 |
commit | 1f0c90b9a34872c3a33ea12c6e5e329a1f98b213 (patch) | |
tree | b4522548f89a2abe28053d47748b0f9adee8c164 /src | |
parent | Explicit import from "node:process"; move log() to hero.mjs (diff) | |
download | papod-1f0c90b9a34872c3a33ea12c6e5e329a1f98b213.tar.gz papod-1f0c90b9a34872c3a33ea12c6e5e329a1f98b213.tar.xz |
src/hero.mjs: Promote log() to fancy logger object
Diffstat (limited to 'src')
-rw-r--r-- | src/hero.mjs | 33 | ||||
-rw-r--r-- | src/utils.mjs | 4 |
2 files changed, 33 insertions, 4 deletions
diff --git a/src/hero.mjs b/src/hero.mjs index 899e3fb..268136f 100644 --- a/src/hero.mjs +++ b/src/hero.mjs @@ -145,7 +145,32 @@ export const makeRequestListener = table => async (req, res) => { res.end(response.body); }; -export const log = o => console.error(JSON.stringify(o)); +export const loggerDefaults = { + pid: process.pid, + ppid: process.ppid, +}; + +export let loggerGlobals = {}; + +export const configLogger = o => loggerGlobals = o; + +export const logit = (writerFn, level, o) => + writerFn(JSON.stringify({ + ...loggerDefaults, + ...loggerGlobals, + level, + ...o, + })); + +export const makeLogger = (writerFn = console.error) => ({ + debug: (...args) => process.env.DEBUG ? + logit(writerFn, "DEBUG", ...args) : + null, + info: u.partial(logit, writerFn, "INFO"), + warn: u.partial(logit, writerFn, "WARN"), + error: u.partial(logit, writerFn, "ERROR"), +}); +export const log = makeLogger(); export const interceptorsFn = ({ uuidFn, @@ -157,7 +182,7 @@ export const interceptorsFn = ({ requestId: (req, next) => next({ ...req, id: uuidFn() }), logged: async (req, next) => { const { id, url, method } = req; - logger({ + logger.info({ id, url, method, @@ -165,7 +190,7 @@ export const interceptorsFn = ({ }); const response = await next(req); const { status } = response; - logger({ + logger.info({ id, status, type: "in-response", @@ -193,7 +218,7 @@ export const interceptorsFn = ({ assert.ok("status" in response, `Missing "status"`); return response; } catch (error) { - logger({ + logger.error({ id: req.id, type: "server-error-interceptor", message: error.message, diff --git a/src/utils.mjs b/src/utils.mjs index f2e09e4..c671f0f 100644 --- a/src/utils.mjs +++ b/src/utils.mjs @@ -76,3 +76,7 @@ export const first = (arr, fn) => { export const promisify = fn => (...args) => new Promise((resolve, reject) => fn(...args, (err, data) => err ? reject(err) : resolve(data))); + +export const partial = (fn, ...startArgs) => + (...endArgs) => + fn(...startArgs, ...endArgs); |