Skip to main content
Module

x/i18next/logger.js

i18next: learn once - translate everywhere
Go to Latest
File
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();