UNPKG

@kitmi/jacaranda

Version:

JavaScript application framework

119 lines (117 loc) 3.69 kB
/** * Enable multi-categories logging by pino logger * @module Feature_Logger */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, /* logger: { transport: { target: '/absolute/path/to/my-transport.mjs' } } logger: { transport: { targets: [ { target: '/absolute/path/to/my-transport.mjs', level: 'error' }, { target: 'some-file-transport', options: { destination: '/dev/null' } ] } */ "default", { enumerable: true, get: function() { return _default; } }); const _utils = require("@kitmi/utils"); const _Feature = /*#__PURE__*/ _interop_require_default(require("../Feature")); const _pino = /*#__PURE__*/ _interop_require_default(require("pino")); require("pino-pretty"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const _default = { /** * This feature is loaded at service stage * @member {string} */ stage: _Feature.default.SERVICE, groupable: true, packages: [ 'pino', 'pino-pretty' ], /** * Load the feature * @param {App} app - The cli app module object * @param {object} categories - Configuration for multi-categories * @returns {Promise.<*>} * @example * * let logger = app.getService('logger'); * logger.log('error', 'error'); * * // with serviceGroup * let logger1 = app.getService('logger-category1'); */ load_: function(app, config, name) { config = app.featureConfig(config ?? {}, { schema: { transport: { type: 'object', optional: true } }, keepUnsanitized: true }, name); const options = { level: app.options.logLevel, nestedKey: 'payload', transport: { target: 'pino-pretty', options: { levelFirst: true, colorize: true, ignore: 'time,hostname,pid' } }, ...config }; if (options.level === 'verbose') { options.level = 'debug'; } const names = name.split('.', 2); let isAppLogger = true; if (names.length > 1) { options.name = names[1]; isAppLogger = false; } const logger = (0, _pino.default)(options); logger.verbose = logger.debug.bind(logger); logger.log = (level, message, info)=>logger[level](info, message); if (isAppLogger) { if (app._logCache.length > 0) { app._logCache.forEach(([level, message, obj])=>logger[level](obj, message)); app._logCache.length = 0; } const makeLogger = (logger)=>({ log: (level, message, info)=>logger[level](info, message), child: (arg1, arg2)=>{ const _logger = logger.child(arg1, arg2?.level ? { ...arg2, level: arg2.level === 'verbose' ? 'debug' : arg2.level } : arg2); _logger.verbose = _logger.debug.bind(_logger); return makeLogger(_logger); }, flush: (cb)=>{ logger.flush(cb); } }); app.logger = makeLogger(logger); } app.registerService(name, logger); } }; //# sourceMappingURL=logger.js.map