containr
Version:
Docker Build scripts for npm
177 lines (138 loc) • 4.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.backupDump = exports.logLevels = undefined;
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _figlet = require('figlet');
var _figlet2 = _interopRequireDefault(_figlet);
var _boxen = require('boxen');
var _boxen2 = _interopRequireDefault(_boxen);
var _timeStamp = require('time-stamp');
var _timeStamp2 = _interopRequireDefault(_timeStamp);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const defaultFormat = (level, log, ts, meta) => `${ts}${level} ${log} ${meta}\n`;
const logColors = {
0: _chalk2.default.bold.red,
1: _chalk2.default.yellow.bold,
2: _chalk2.default.green.bold,
3: _chalk2.default.white.bold,
4: _chalk2.default.white,
5: _chalk2.default.gray
};
const logLevels = exports.logLevels = {
error: 0,
warn: 1,
banner: 2,
info: 3,
verbose: 4,
debug: 5
};
const logBanners = {
error: _chalk2.default.bgRed.black('ERR'),
warn: _chalk2.default.bgYellow.black('WARN')
};
const defaultBoxOptions = {
padding: 1,
borderColor: 'red',
borderStyle: 'double-single',
dimBorder: false,
margin: 0,
float: 'left',
backgroundColor: 'red',
align: 'center'
};
const curLevel = logLevels.info;
const oldLog = console.log;
const getTimestamp = (format = 'HH:mm:ss') => {
return _chalk2.default.grey('[') + _chalk2.default.white((0, _timeStamp2.default)(format)) + _chalk2.default.grey(']');
};
const dumpObject = (obj = null) => {
if (!obj) return '';
try {
let str = (0, _stringify2.default)(obj, null, 4);
return str;
} catch (er) {
oldLog(obj);
return '[json error]';
}
};
const backupDump = exports.backupDump = (obj = null) => {
return (0, _keys2.default)(obj).join(', ');
};
class Logger {
constructor() {
for (const level of (0, _keys2.default)(logLevels)) {
this[level] = (msg, ...args) => this.logmsg(logLevels[level], msg, ...args);
}
this.levels = logLevels;
this.curLevel = logLevels.info;
// this.log = this.log.apply(this);
return this;
}
// info (log, ...args) {
// return this.log(logLevels.info, ...args);
// }
setLevel(level) {
if (!/\d+/.test(level)) {
if (!level in logLevels) {
this.error('Invalid logging level ' + level);
return false;
}
level = logLevels[level];
} else {
if (!level > 0 && level <= (0, _keys2.default)(logLevels).length) {
this.error(`Invalid logging level: ${level}`);
return false;
}
}
this.info('Set logging level to ' + (0, _keys2.default)(logLevels)[level]);
this.curLevel = level;
return this;
}
box(log, options = {}) {
let box = (0, _boxen2.default)(log, (0, _assign2.default)(defaultBoxOptions, options));
process.stdout.write(box + '\n');
return this;
}
text(log, options = {}) {
let textMessage = _figlet2.default.textSync(log, {
horizontalLayout: 'default',
verticalLayout: 'default'
});
process.stdout.write(_chalk2.default.white.bold(textMessage) + '\n');
return this;
}
info(log, ...meta) {
return this.logmsg(logLevels.info, log, ...meta);
}
logmsg(level, log, ...meta) {
if (level > this.curLevel) return this;
log = log instanceof Object ? dumpObject(log) : log;
meta = meta.map(dumpObject).join(' ');
let timeStamp = getTimestamp();
if (typeof logColors[level] === 'function') {
log = logColors[level](log);
meta = logColors[level](meta);
} else {
console.error(`Not a function - ${logColors[level]} for level ${level} in ${logColors}`);
}
// meta = meta ? dumpObject(meta) : '';
level = (0, _keys2.default)(logLevels)[level];
let levelBanner = level in logBanners ? ' ' + logBanners[level] : '';
var logLine = defaultFormat(levelBanner, log, timeStamp, meta);
process.stdout.write(logLine);
return this;
}
}
const l = new Logger();
console.log = l.info;
exports.default = l;
//# sourceMappingURL=logger.js.map
;