69 lines
1.4 KiB
JavaScript
69 lines
1.4 KiB
JavaScript
const consoleLogger = {
|
|
type: 'logger',
|
|
|
|
log(args) {
|
|
this.output('log', args);
|
|
},
|
|
|
|
warn(args) {
|
|
this.output('warn', args);
|
|
},
|
|
|
|
error(args) {
|
|
this.output('error', args);
|
|
},
|
|
|
|
output(type, args) {
|
|
/* eslint no-console: 0 */
|
|
if (console && console[type]) console[type].apply(console, args);
|
|
},
|
|
};
|
|
|
|
class Logger {
|
|
constructor(concreteLogger, options = {}) {
|
|
this.init(concreteLogger, options);
|
|
}
|
|
|
|
init(concreteLogger, options = {}) {
|
|
this.prefix = options.prefix || 'i18next:';
|
|
this.logger = concreteLogger || consoleLogger;
|
|
this.options = options;
|
|
this.debug = options.debug;
|
|
}
|
|
|
|
setDebug(bool) {
|
|
this.debug = bool;
|
|
}
|
|
|
|
log(...args) {
|
|
return this.forward(args, 'log', '', true);
|
|
}
|
|
|
|
warn(...args) {
|
|
return this.forward(args, 'warn', '', true);
|
|
}
|
|
|
|
error(...args) {
|
|
return this.forward(args, 'error', '');
|
|
}
|
|
|
|
deprecate(...args) {
|
|
return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);
|
|
}
|
|
|
|
forward(args, lvl, prefix, debugOnly) {
|
|
if (debugOnly && !this.debug) return null;
|
|
if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;
|
|
return this.logger[lvl](args);
|
|
}
|
|
|
|
create(moduleName) {
|
|
return new Logger(this.logger, {
|
|
...{ prefix: `${this.prefix}:${moduleName}:` },
|
|
...this.options,
|
|
});
|
|
}
|
|
}
|
|
|
|
export default new Logger();
|