@krainovsd/fastify-logger
Version:
Krainov fastify logger
68 lines (63 loc) • 2.02 kB
JavaScript
;
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