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/hero.mjs | |
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/hero.mjs')
-rw-r--r-- | src/hero.mjs | 33 |
1 files changed, 29 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, |