Files
mermaid/src/logger.js
2015-11-15 15:06:24 +01:00

95 lines
2.2 KiB
JavaScript

/**
* #logger
* logger = require('logger').create()
* logger.info("blah")
* => [2011-3-3T20:24:4.810 info (5021)] blah
* logger.debug("boom")
* =>
* logger.level = Logger.levels.debug
* logger.debug(function() { return "booom" })
* => [2011-3-3T20:24:4.810 error (5021)] booom
*/
const LEVELS = {
debug: 1,
info: 2,
warn: 3,
error: 4,
fatal: 5,
default: 5
};
var 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;
}
function Log(level) {
this.level = level;
this.log = function(str, level) {
var 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
}
}
}
};
this.trace = function(str) {
this.log(str, LEVELS.trace);
};
this.debug = function(str) {
this.log(str, LEVELS.debug);
};
this.info = function(str) {
this.log(str, LEVELS.info);
};
this.warn = function(str) {
this.log(str, LEVELS.warn);
};
this.error = function(str) {
this.log(str, LEVELS.error);
};
}
exports.Log = Log;