diff --git a/server/core/logger.js b/server/core/logger.js index d6cf0ab501..a6775608bf 100644 --- a/server/core/logger.js +++ b/server/core/logger.js @@ -1,26 +1,61 @@ // const _ = require('lodash') const winston = require('winston') + /* global WIKI */ +let WikiErrorFormat = winston.format((info)=>{ + + var errorObject = null; + + if(info instanceof Error){ + errorObject = info; + } + else if(info.message instanceof Error){ + errorObject = info.message; + } + + info._wiki_error = errorObject; + + return info; +}) + + +let WikiLoggerPrintf = (info) =>{ + var msg = info.message; + + if(info._wiki_error){ + msg = info._wiki_error.stack; + } + + + + return `${info.timestamp} [${info.label}] ${info.level}: ${msg}`; + + } + + + module.exports = { loggers: {}, init(uid) { const loggerFormats = [ + WikiErrorFormat(), winston.format.label({ label: uid }), winston.format.timestamp() + ,winston.format.errors({stack: true }) ] if (WIKI.config.logFormat === 'json') { loggerFormats.push(winston.format.json()) } else { loggerFormats.push(winston.format.colorize()) - loggerFormats.push(winston.format.printf(info => `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`)) + loggerFormats.push(winston.format.printf(WikiLoggerPrintf)) } const logger = winston.createLogger({ - level: WIKI.config.logLevel, - format: winston.format.combine(...loggerFormats) + level: WIKI.config.logLevel + ,format: winston.format.combine(...loggerFormats) }) // Init Console (default)