debugnyan
Version:
A logging library that combines the simplicity and convenience of debug with the power of bunyan
52 lines (39 loc) • 986 B
JavaScript
/**
* Module dependencies.
*/
const bunyan = require('bunyan');
const debug = require('debug');
/**
* Loggers.
*/
const loggers = Object.create(null);
/**
* Default level.
*/
const level = bunyan.FATAL + 1;
/**
* Export `debugnyan`.
*/
module.exports = function debugnyan(name, options = {}, { prefix = 'sub', simple = true, suffix = 'component' } = {}) {
const [root, ...components] = name.split(':');
if (!loggers[root]) {
loggers[root] = bunyan.createLogger({ ...options, level, name: root });
}
if (!loggers[name]) {
loggers[name] = loggers[root].child(
components.reduce(
(total, current, i) => {
total[`${prefix.repeat(i)}${suffix}`] = current;
return total;
},
{ level }
),
simple
);
}
if (debug.enabled(name)) {
// eslint-disable-next-line no-process-env
loggers[name].level(options?.level ?? process.env.LOG_LEVEL ?? bunyan.DEBUG);
}
return loggers[name];
};