Fix for issue #204, added width option to the CLI. Default value for width is 1200.

Added logger using es6 syntax
This commit is contained in:
knsv
2015-10-19 21:36:55 +02:00
parent 57b731842b
commit b43e695da2
22 changed files with 994 additions and 522 deletions

View File

@@ -9,88 +9,89 @@
* logger.debug(function() { return "booom" })
* => [2011-3-3T20:24:4.810 error (5021)] booom
*/
var Logger;
Logger = (function() {
function Logger(options) {
var level, ref;
this.options = options || {};
this.level = this.options.level || Logger.levels.default;
ref = Logger.levels;
for (level in ref) {
Logger.define(this, level);
}
}
Logger.prototype.add = function(level, message, callback) {
if (this.level > (Logger.levels[level] || 5)) {
return;
}
if (callback) {
message = callback();
} else if (typeof message === 'function') {
message = message();
}
return this.write({
timestamp: new Date,
severity: level,
message: message,
pid: process.pid
});
};
function formatTime(timestamp){
var hh = timestamp.getUTCHours();
var mm = timestamp.getUTCMinutes();
var ss = timestamp.getSeconds();
var ms = timestamp.getMilliseconds();
// If you were building a timestamp instead of a duration, you would uncomment the following line to get 12-hour (not 24) time
// if (hh > 12) {hh = hh % 12;}
// These lines ensure you have two-digits
if (hh < 10) {hh = '0'+hh;}
if (mm < 10) {mm = '0'+mm;}
if (ss < 10) {ss = '0'+ss;}
if (ms < 100){ms = '0'+ms;}
if (ms < 10) {ms = '00'+ms;}
// This formats your string to HH:MM:SS
var t = hh+':'+mm+':'+ss +' ('+ms+')';
return t;
}
Logger.prototype.write = function(options) {
if(typeof console !== 'undefined'){ //eslint-disable-line no-console
if(typeof console.log !== 'undefined'){ //eslint-disable-line no-console
return console.log(this.build_message(options)); //eslint-disable-line no-console
}
}
};
Logger.prototype.build_message = function(options) {
return '[' + formatTime(options.timestamp) + '] ' + options.message;
};
return Logger;
})();
Logger.define = function(logger, level) {
return logger[level] = function(message, callback) {
return this.add(level, message, callback);
};
};
Logger.levels = {
const LEVELS = {
debug: 1,
info: 2,
warn: 3,
error: 4,
fatal: 5,
default:5
default: 5
};
exports.setLogLevel = function(level){
Logger.levels.default = level;
let defaultLevel = LEVELS.error;
exports.setLogLevel = function (level) {
defaultLevel = level;
};
function formatTime(timestamp) {
var hh = timestamp.getUTCHours();
var mm = timestamp.getUTCMinutes();
var ss = timestamp.getSeconds();
var ms = timestamp.getMilliseconds();
// If you were building a timestamp instead of a duration, you would uncomment the following line to get 12-hour (not 24) time
// if (hh > 12) {hh = hh % 12;}
// These lines ensure you have two-digits
if (hh < 10) {
hh = '0' + hh;
}
if (mm < 10) {
mm = '0' + mm;
}
if (ss < 10) {
ss = '0' + ss;
}
if (ms < 100) {
ms = '0' + ms;
}
if (ms < 10) {
ms = '00' + ms;
}
// This formats your string to HH:MM:SS
var t = hh + ':' + mm + ':' + ss + ' (' + ms + ')';
return t;
}
exports.create = function(options) {
return new Logger(options);
};
class Log {
constructor(level) {
this.level = level;
}
log(str, level) {
let logLevel = this.level;
if(typeof logLevel === 'undefined'){
logLevel = defaultLevel;
}
if (logLevel <= level) {
if (typeof console !== 'undefined') { //eslint-disable-line no-console
if (typeof console.log !== 'undefined') { //eslint-disable-line no-console
return console.log('[' + formatTime(new Date()) + '] ' + str); //eslint-disable-line no-console
}
}
}
}
trace(str) {
this.log(str, LEVELS.trace);
}
debug(str) {
this.log(str, LEVELS.debug);
}
info(str) {
this.log(str, LEVELS.info);
}
warn(str) {
this.log(str, LEVELS.warn);
}
error(str) {
this.log(str, LEVELS.error);
}
}
exports.Log = Log;