rexuws
Version:
An express-like framework built on top of uWebsocket.js aims at simple codebase and high performance
63 lines (62 loc) • 2.15 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class Logger {
constructor(opts, logger) {
if (!opts || typeof opts !== 'object') {
this._prefix = '';
this._level = ['error', 'warn', 'deprecate'];
}
else {
const { prefix = '', level = ['error', 'warn', 'deprecate'] } = opts;
this._prefix = prefix;
if (typeof level === 'boolean') {
if (level)
this._level = ['error', 'warn', 'deprecate', 'info', 'log', 'trace'];
else
this._level = false;
}
else
this._level = level;
}
this._logger = logger || console;
this.info = this.hasLogger('info')
? this._logger.info.bind(this._logger, this._prefix)
: this.off;
this.log = this.hasLogger('log')
? this._logger.log.bind(this._logger, this._prefix)
: this.off;
this.error = this.hasLogger('error')
? this._logger.error.bind(this._logger, this._prefix)
: this.off;
this.warn = this.hasLogger('warn')
? this._logger.warn.bind(this._logger, this._prefix)
: this.off;
this.trace = this.hasLogger('trace')
? this._logger.trace.bind(this._logger, this._prefix)
: this.off;
this.deprecate = this.hasLogger('deprecate')
? this._logger.warn.bind(this._logger, this._prefix, '[DEPRECATED]')
: this.off;
this.print = this._logger.log.bind(this._logger, this._prefix);
}
// eslint-disable-next-line class-methods-use-this
off() {
return null;
}
hasLogger(type) {
if (!this._level)
return false;
if (Array.isArray(this._level) && this._level.indexOf(type) !== -1)
return true;
if (this._level === type)
return true;
return false;
}
getOptions() {
return {
level: this._level,
prefix: this._prefix,
};
}
}
exports.default = Logger;