UNPKG

hono-pino-logger

Version:
52 lines (46 loc) 1.32 kB
'use strict'; var pino = require('pino'); var url = require('hono/utils/url'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var pino__default = /*#__PURE__*/_interopDefault(pino); // src/index.ts var pinoLogger = (logger = pino__default.default({ level: "info" })) => { return async (c, next) => { const { method } = c.req; const path = url.getPath(c.req.raw); logger.info( { requestId: "requestId" in c.req ? c.req.requestId : void 0, request: { method, path } }, "Incoming request" ); const start = Date.now(); await next(); const { status } = c.res; logger.info( { requestId: "requestId" in c.req ? c.req.requestId : void 0, response: { status, ok: String(c.res.ok), time: time(start) } }, "Request completed" ); }; }; function humanize(times) { const [delimiter, separator] = [",", "."]; const orderTimes = times.map((v) => v.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + delimiter)); return orderTimes.join(separator); } function time(start) { const delta = Date.now() - start; return humanize([delta < 1e3 ? delta + "ms" : Math.round(delta / 1e3) + "s"]); } exports.pinoLogger = pinoLogger;