UNPKG

microservice-support-toolkit

Version:

A global module with commons utilities for microservice support

90 lines (74 loc) 3.29 kB
const bunyan = require('bunyan'); const YAML = require('yaml'); const path = require('path'); const fs = require('fs'); let APPNAME = 'microservice'; const FILEPATH = path.join(__dirname, '../../../../log/app.log'); const init = () => { try { const filePath = path.join(__dirname, '../../../../resources/bootstrap.yml'); const file = fs.readFileSync(filePath, 'utf8'); const yamlFile = YAML.parse(file); APPNAME = yamlFile.app.name; } catch (err) { console.error('/resources/bootstrap.yml NOT FOUND !!!!', err); } }; init(); // Override console console.authorizedOutput = console.log; console.log = (msg, params) => (params ? logger.trace(msg, params) : logger.trace(msg)); console.trace = (msg, params) => (params ? logger.trace(msg, params) : logger.trace(msg)); console.debug = (msg, params) => (params ? logger.trace(msg, params) : logger.trace(msg)); console.info = (msg, params) => (params ? logger.trace(msg, params) : logger.trace(msg)); console.warn = (msg, params) => (params ? logger.trace(msg, params) : logger.trace(msg)); console.error = (msg, params) => (params ? logger.trace(msg, params) : logger.trace(msg)); 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))) };