winston-console-formatter
Version:
Pretty print console formatter in yaml like style
84 lines (69 loc) • 2.56 kB
JavaScript
;
var yamlifyObject = require('yamlify-object');
var yamlifyColors = require('yamlify-object-colors');
var utils = require('./utils');
var Message = require('./message');
var Colorizer = require('./colorizer');
var defaultErrorColors = require('./colors');
function configuredFormatter(_ref) {
var _ref$postfix = _ref.postfix,
postfix = _ref$postfix === undefined ? '' : _ref$postfix,
_ref$prefix = _ref.prefix,
prefix = _ref$prefix === undefined ? '' : _ref$prefix,
_ref$stackTrace = _ref.stackTrace,
stackTrace = _ref$stackTrace === undefined ? true : _ref$stackTrace,
_ref$meta = _ref.meta,
props = _ref$meta === undefined ? true : _ref$meta,
_ref$colors = _ref.colors,
colors = _ref$colors === undefined ? defaultErrorColors : _ref$colors,
_ref$types = _ref.types,
types = _ref$types === undefined ? yamlifyColors : _ref$types;
/**
* @param {Object} options
* @return {string}
*/
return function formatter(options) {
var meta = options.meta,
level = options.level,
label = options.label,
message = options.message,
timestamp = options.timestamp;
var from = meta.from,
stack = meta.stack,
trace = meta.trace,
objectMessage = meta.message;
delete meta.from;
delete meta.message;
delete meta.stack;
delete meta.trace;
var stackTraceRaw = stack || trace;
var stackTraceJoined = void 0;
var stackTraceMesssage = void 0;
if (!(message || objectMessage) && Array.isArray(stackTraceRaw)) {
stackTraceMesssage = stackTraceRaw[0];
}
if (Array.isArray(stackTraceRaw)) {
stackTraceJoined = stackTraceRaw.join('\n');
}
var formattedMessage = new Message().setColorizer(new Colorizer(colors)).setTime(timestamp).setLabel(label).setLevel(level).setFrom(from).setMessage(stackTraceMesssage || message || objectMessage).toString();
if (stackTrace) {
formattedMessage += utils.getStackTrace(stackTraceJoined === undefined ? stackTraceRaw : stackTraceJoined, Boolean(colors));
}
if (props) {
formattedMessage += yamlifyObject(meta, {
colors: types,
indent: ' ',
prefix: '\n',
postfix: ''
});
}
return `${prefix}${formattedMessage}${postfix}`;
};
}
module.exports = function config() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return {
timestamp: utils.getISOTime,
formatter: configuredFormatter(options)
};
};