@wiz-code/async-fsm
Version:
Finite StateMachine JavaScript Library
64 lines (52 loc) • 1.52 kB
JavaScript
;
var _ = require('underscore');
var logger = {
config: {
logLevel: 'DEBUG',
debuggable: true,
},
logLevelData: [
'DEBUG',
'INFO',
'WARN',
'ERROR',
],
enable: function () {
if (!this.config.debuggable) {
this.config.debuggable = true;
}
},
disable: function () {
if (this.config.debuggable) {
this.config.debuggable = false;
}
},
setLogLevel: function (level) {
level = level.toUpperCase();
if (_.indexOf(this.logLevelData, level) !== -1) {
this.config.logLevel = level;
}
},
debug: function (message) {
if (this.config.debuggable && _.indexOf(this.logLevelData, this.config.logLevel) <= 0) {
console.log('DEBUG: ', message);
}
},
info: function (message) {
if (this.config.debuggable && _.indexOf(this.logLevelData, this.config.logLevel) <= 1) {
console.log('INFO: ', message);
}
},
warn: function (message) {
if (this.config.debuggable && _.indexOf(this.logLevelData, this.config.logLevel) <= 2) {
console.log('WARN: ', message);
}
},
error: function (message) {
if (this.config.debuggable && _.indexOf(this.logLevelData, this.config.logLevel) <= 3) {
console.error('ERROR: ', message);
throw new Error('ERROR: ' + message);
}
},
};
module.exports = logger;