UNPKG

@neodx/log

Version:

A lightweight universal logging framework

77 lines (76 loc) 2.8 kB
var e = require('@neodx/colors'), r = require('../_internal/read-arguments-DiLh6En8.cjs'), o = require('../_internal/index-7E2-tFgQ.cjs'); const t = (e, { ignoreWritableEnded: r = !1, delimiter: t = e => ' ' } = {}) => n => { let s = o.formatIncomingMessage(n.req, n.colors, t(n)); return r || n.res.writableEnded ? e(s, n) : `(aborted) ${s}`; }, n = t(r.identity, { ignoreWritableEnded: !0 }), s = t((e, r) => `${r.colors.greenBright(o.formatResponseTime(r.responseTime))} ${e}`), i = t((e, r) => `${r.colors.redBright(o.formatResponseTime(r.responseTime))} ${e}`), a = t((e, r) => `${r.colors.redBright(o.formatResponseTime(r.responseTime))} ${e}`, { delimiter: ({ colors: e, res: r }) => e.italic(` (${o.formatOutgoingMessageStatus(r)}) `) }), d = (e, ...r) => ('function' == typeof e ? e(...r) : e); exports.createHttpLogger = function ({ simple: r = 'development' === process.env.NODE_ENV, colors: t = e.colors, logger: l = o.createLogger(), getRequestId: u = o.createRequestIdGenerator(), getMeta: c, getErrorMeta: f, getErrorMessage: m = r ? a : i, getRequestMeta: g, getRequestMessage: p = n, getResponseMeta: T, getResponseMessage: $ = s, shouldLog: q = !0, shouldLogError: E = !0, shouldLogRequest: L = !1, shouldLogResponse: R = !0 } = {}) { return function (e, n, s) { if (!d(q, e, n)) return s?.(); e.id ??= u(e, n); let i = Date.now(), a = l.fork({ meta: { ...l.meta, ...c?.(e, n), ...(!r && { requestId: e.id, req: e }) } }), _ = { req: e, res: n, logger: a, colors: t, responseTime: 0 }; (e.log ??= a), (n[o.HTTP_LOG_START_TIME_SYMBOL] = i); let b = e => ( n.removeListener('finish', b), n.removeListener('close', b), n.removeListener('error', b), (function (e) { let { error: o, logger: t, res: n, responseTime: s } = e, i = o || n.err || (n.statusCode >= 500 && Error('failed with status code ' + n.statusCode)); if (i) { if (!d(E, e)) return; let o = f?.(e) ?? { err: i, res: n, responseTime: s }; if (r) { t.error({ err: i }, m(e)), t.debug(o, 'Error details:'); return; } t.error(o, m(e)); return; } if (!d(R, e)) return; let a = T?.(e) ?? { res: n, responseTime: s }; if (r) { t.done($(e)), t.debug(a, 'Response details:'); return; } t.done(a, $(e)); })({ ..._, error: e, responseTime: Date.now() - i }) ); n.on('error', b), n.on('close', b), n.on('finish', b), d(L, _) && (r ? (a.info(p(_)), g && a.debug(g(_), 'Request details:')) : a.info(g?.(_) ?? {}, p(_))), s?.(); }; }; //# sourceMappingURL=index.cjs.map