106 lines
2.4 KiB
JavaScript
106 lines
2.4 KiB
JavaScript
let _level = null;
|
|
|
|
class Logger {
|
|
static levels = ['error', 'warn', 'info', 'debug'];
|
|
|
|
constructor(level) {
|
|
if (!_level) {
|
|
_level = level || 'debug';
|
|
}
|
|
|
|
this.isBrowser = typeof process === 'undefined'
|
|
|| process.type === 'renderer'
|
|
|| process.browser === true
|
|
|| process.__nwjs;
|
|
if (!this.isBrowser) {
|
|
this.colors = {
|
|
start: '\x1b[2m',
|
|
warn: '\x1b[35m',
|
|
info: '\x1b[33m',
|
|
debug: '\x1b[36m',
|
|
error: '\x1b[31m',
|
|
end: '\x1b[0m',
|
|
};
|
|
} else {
|
|
this.colors = {
|
|
start: '%c',
|
|
warn: 'color : #ff00ff',
|
|
info: 'color : #ffff00',
|
|
debug: 'color : #00ffff',
|
|
error: 'color : #ff0000',
|
|
end: '',
|
|
};
|
|
}
|
|
this.messageFormat = '[%t] [%l] - [%m]';
|
|
}
|
|
|
|
static setLevel(level) {
|
|
_level = level;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param level {string}
|
|
* @returns {boolean}
|
|
*/
|
|
canSend(level) {
|
|
return (Logger.levels.indexOf(_level) >= Logger.levels.indexOf(level));
|
|
}
|
|
|
|
/**
|
|
* @param message {string}
|
|
*/
|
|
warn(message) {
|
|
this._log('warn', message, this.colors.warn);
|
|
}
|
|
|
|
/**
|
|
* @param message {string}
|
|
*/
|
|
info(message) {
|
|
this._log('info', message, this.colors.info);
|
|
}
|
|
|
|
/**
|
|
* @param message {string}
|
|
*/
|
|
debug(message) {
|
|
this._log('debug', message, this.colors.debug);
|
|
}
|
|
|
|
/**
|
|
* @param message {string}
|
|
*/
|
|
error(message) {
|
|
this._log('error', message, this.colors.error);
|
|
}
|
|
|
|
format(message, level) {
|
|
return this.messageFormat.replace('%t', new Date().toISOString())
|
|
.replace('%l', level.toUpperCase())
|
|
.replace('%m', message);
|
|
}
|
|
|
|
/**
|
|
* @param level {string}
|
|
* @param message {string}
|
|
* @param color {string}
|
|
*/
|
|
_log(level, message, color) {
|
|
if (!_level) {
|
|
return;
|
|
}
|
|
if (this.canSend(level)) {
|
|
if (!this.isBrowser) {
|
|
console.log(color + this.format(message, level) + this.colors.end);
|
|
} else {
|
|
console.log(this.colors.start + this.format(message, level), color);
|
|
}
|
|
} else {
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = Logger;
|