UNPKG

winston-console-formatter

Version:
84 lines (69 loc) 2.56 kB
'use strict'; 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) }; };