UNPKG

generator-rem-server

Version:

A generator for creating REM Servers. REM Server stands for Robert's Express & Mongo Server.

70 lines (53 loc) 1.45 kB
const extend = require('extend'); const common = require('winston/lib/winston/common'); class ChildLogger { constructor(logger, prefix, meta) { if (typeof prefix === 'object') { meta = prefix; prefix = ''; } prefix || (prefix = ''); meta || (meta = null); if (meta) { meta = extend(true, {}, meta); } this.logger = logger; this.levels = logger.levels; this.prefix = prefix; this.meta = meta; common.setLevels(this, [], this.levels); } log(level, ...args) { if (this.prefix && typeof args[0] === 'string') { args[0] = this.prefix + args[0]; } if (this.meta) { let metaIndex = args.length - 1; while (args[metaIndex] === null) { metaIndex -= 1; } if (typeof args[metaIndex] === 'function') { metaIndex -= 1; } const meta = {}; if (typeof args[metaIndex] === 'object') { extend(true, meta, args[metaIndex]); } else { args.splice(metaIndex + 1, 0, meta); } for (const key in this.meta) { meta[key] = this.meta[key]; } } this.logger.log.apply(this.logger, [level].concat(args)); } child(prefix, meta) { return new ChildLogger(this, prefix, meta); } } function extendLogger(logger) { logger.child = ChildLogger.prototype.child; return logger; } exports = module.exports = extendLogger; exports.ChildLogger = ChildLogger;