UNPKG

webappengine

Version:

A web application server that can host multiple web apps running with Node.js.

67 lines (62 loc) 2.1 kB
import cluster from 'cluster'; import util from 'util'; import winston from 'winston'; import settings from '../config/settings'; const meta = () => { let meta = {}; if (cluster.isMaster) { meta.id = 0; meta.pid = process.pid; } else if (cluster.isWorker) { meta.id = cluster.worker.id; meta.pid = cluster.worker.process.pid; } return { meta: meta }; }; // https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi const getStackTrace = () => { let obj = {}; Error.captureStackTrace(obj, getStackTrace); return (obj.stack || '').split('\n'); }; const prefix = []; const logger = new winston.Logger({ exitOnError: false, level: settings.winston.level, transports: [ new winston.transports.Console({ colorize: true, timestamp: true, handleExceptions: true, json: false }) ] }); export default { logger, log: function(...args) { let level = args.shift(); let stackTrace = getStackTrace()[2]; logger.log(level, util.format.apply(util.format, prefix.concat(args).concat(stackTrace)), meta()); }, debug: function(...args) { let stackTrace = getStackTrace()[2]; logger.debug(util.format.apply(util.format, prefix.concat(args).concat(stackTrace)), meta()); }, verbose: function(...args) { let stackTrace = getStackTrace()[2]; logger.verbose(util.format.apply(util.format, prefix.concat(args).concat(stackTrace)), meta()); }, info: function(...args) { let stackTrace = getStackTrace()[2]; logger.info(util.format.apply(util.format, prefix.concat(args).concat(stackTrace)), meta()); }, warn: function(...args) { let stackTrace = getStackTrace()[2]; logger.warn(util.format.apply(util.format, prefix.concat(args).concat(stackTrace)), meta()); }, error: function(...args) { let stackTrace = getStackTrace()[2]; logger.error(util.format.apply(util.format, prefix.concat(args).concat(stackTrace)), meta()); } };