winston-console-formatter
Version:
Pretty print console formatter in yaml like style
158 lines (123 loc) • 3.5 kB
JavaScript
'use strict';
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var utils = require('./utils');
var Message = function () {
function Message() {
_classCallCheck(this, Message);
this._colorizer = null;
this._message = 'No message';
this._timestamp = null;
this._level = 'info';
this._label = null;
this._from = null;
}
_createClass(Message, [{
key: 'setColorizer',
/**
*
* @param {Colorizer} colorizer
*/
value: function setColorizer(colorizer) {
this._colorizer = colorizer;
return this;
}
}, {
key: 'colorify',
value: function colorify(string) {
var color = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
try {
var clr = color || this._colorizer.colorByLevel(this._level);
return clr(string);
} catch (e) {
return string;
}
}
/**
* @param {string|undefined} message
* @return {Message}
*/
}, {
key: 'setMessage',
value: function setMessage(message) {
if (message) {
this._message = message;
}
return this;
}
/**
* @param {boolean|function} timestamp
* @return {Message}
*/
}, {
key: 'setTime',
value: function setTime(timestamp) {
if (timestamp === true) {
this._timestamp = utils.getISOTime();
} else if (typeof timestamp === 'function') {
this._timestamp = timestamp();
}
return this;
}
/**
* @param {string|undefined} label
* @return {Message}
*/
}, {
key: 'setLabel',
value: function setLabel(label) {
if (label) {
this._label = label;
}
return this;
}
/**
* @param {string|undefined} level
* @return {Message}
*/
}, {
key: 'setLevel',
value: function setLevel(level) {
if (level) {
this._level = level.toLowerCase();
}
return this;
}
/**
* @param {string|undefined} from
* @return {Message}
*/
}, {
key: 'setFrom',
value: function setFrom(from) {
if (from) {
this._from = from;
}
return this;
}
}, {
key: 'toString',
value: function toString() {
var before = '';
var from = '';
var after = '';
if (this._timestamp) {
before += `[${this._timestamp}] `;
}
if (this._label) {
before += `${this._label} `;
}
before += `[${this._level.toUpperCase()}] `;
before = this.colorify(before);
if (this._from) {
from += `${this._from} `;
after += '- ';
}
after += `${this._message}`;
after = this.colorify(after);
return before + from + after;
}
}]);
return Message;
}();
module.exports = Message;