UNPKG

@krainovsd/fastify-logger

Version:
68 lines (63 loc) 2.02 kB
'use strict'; const jsHelpers = require('@krainovsd/js-helpers'); const build = require('pino-abstract-transport'); require('@opentelemetry/api'); require('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 (!jsHelpers.isObject(obj)) return; obj.time = new Date().toISOString(); if (jsHelpers.isString(obj.level) || jsHelpers.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"; } } } module.exports = transport; //# sourceMappingURL=transport.cjs.map