UNPKG

@krainovsd/fastify-logger

Version:
66 lines (62 loc) 1.99 kB
import { isObject, isString, isNumber } from '@krainovsd/js-helpers'; import build from 'pino-abstract-transport'; import '@opentelemetry/api'; import 'uuid'; function isHasSpace(str) { return typeof str === "string" && str.includes(" "); } function getCorrectLog(obj, deniedProperties, format = "logfmt") { const correctObj = Object.fromEntries(Object.entries(obj).filter(([key, value]) => !(deniedProperties?.includes?.(key.toLowerCase()) || typeof value === "undefined"))); switch (format) { case "logfmt": { let log = ""; Object.entries(correctObj).forEach(([key, value]) => { if (isHasSpace(value)) { value = `"${value}"`; } log += `${key}=${value} `; }); // eslint-disable-next-line no-console console.log(log.trim()); break; } case "json": { // eslint-disable-next-line no-console console.log(correctObj); break; } } } function transport(opts = {}) { const deniedProperty = opts.deniedProperties?.map((property) => { return String(property).trim().toLowerCase(); }); return build(async function build(source) { for await (const obj of source) { if (!isObject(obj)) return; obj.time = new Date().toISOString(); if (isString(obj.level) || isNumber(obj.level)) obj.level = getPinoLevel(obj.level); getCorrectLog(obj, deniedProperty, opts.format); } }); } function getPinoLevel(level) { switch (String(level).toLowerCase()) { case "30": { return "info"; } case "40": { return "warn"; } case "50": { return "error"; } default: { return "debug"; } } } export { transport as default }; //# sourceMappingURL=transport.js.map