UNPKG

microservice-support-stack

Version:

A global module with commons utilities to support for microservices

75 lines (61 loc) 2.74 kB
const bunyan = require('bunyan'); const path = require('path'); const APPNAME = require('../../../../package.json').name; const FILEPATH = path.join(__dirname, '../../../../log/app.log'); // Override console console.authorizedOutput = console.log; console.log = (msg, params) => logger.trace(msg, params); console.trace = (msg, params) => logger.trace(msg, params); console.debug = (msg, params) => logger.trace(msg, params); console.info = (msg, params) => logger.trace(msg, params); console.warn = (msg, params) => logger.trace(msg, params); console.error = (msg, params) => logger.trace(msg, params); function RawStream() {} RawStream.prototype.write = function (rec) { console.authorizedOutput(`[${formatDateTime(new Date(rec.time.toISOString()))}] ${bunyan.nameFromLevel[rec.level].toUpperCase()} ${rec.msg}`); }; const consoleStreamConfig = { level: 'trace', type: 'raw', stream: new RawStream() }; const fileStreamConfig = { level: 'debug', type: 'rotating-file', path: FILEPATH, period: '1d', count: 3 }; const logger = bunyan.createLogger({ name: APPNAME, streams: [ fileStreamConfig, consoleStreamConfig ] }); const formatDateTime = time => { const year = time.getFullYear(); const month = pad(time.getMonth() + 1, 2); const day = pad(time.getDate(), 2); const hour = pad(time.getHours(), 2); const minutes = pad(time.getMinutes(), 2); const seconds = pad(time.getSeconds(), 2); const milliseconds = pad(time.getMilliseconds(), 3); return `${day}-${month}-${year} ${hour}:${minutes}:${seconds}.${milliseconds}`; }; const pad = (number, size = 0) => { let s = String(number); while (s.length < size) { s = `0${s}`; } return s; }; const handleMessage = (actionName, msg) => `${actionName ? `${actionName} - ` : ''}${msg}`; module.exports = { trace: (msg, params, actionName) => (params ? logger.trace(handleMessage(actionName, msg), params) : logger.trace(handleMessage(actionName, msg))), debug: (msg, params, actionName) => (params ? logger.debug(handleMessage(actionName, msg), params) : logger.debug(handleMessage(actionName, msg))), info: (msg, params, actionName) => (params ? logger.info(handleMessage(actionName , msg), params) : logger.info(handleMessage(actionName , msg))), warn: (msg, params, actionName) => (params ? logger.warn(handleMessage(actionName , msg), params) : logger.warn(handleMessage(actionName , msg))), error: (msg, params, actionName) => (params ? logger.error(handleMessage(actionName, msg), params) : logger.error(handleMessage(actionName, msg))), fatal: (msg, params, actionName) => (params ? logger.fatal(handleMessage(actionName, msg), params) : logger.fatal(handleMessage(actionName, msg))) };