@singleton-i18n/js-core-sdk
Version:
A JavaScript Singleton client library for internationalization and localization that leverage data from Singleton service. The library works both for the browser and as a Node.js module.
53 lines (52 loc) • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.basedLogger = exports.Logger = void 0;
/*
* Copyright 2019-2021 VMware, Inc.
* SPDX-License-Identifier: EPL-2.0
*/
const consoleLogger = {
log(args) { console.log(...args); },
warn(args) { console.warn(...args); },
error(args) { console.error(...args); },
};
class Logger {
constructor(concreteLogger, options = {}) {
this.init(concreteLogger, options);
}
init(concreteLogger, options = {}) {
this.prefix = options.prefix || 'vip-js-client';
this.logger = concreteLogger || consoleLogger;
this.options = options;
this.debug = options.debug || false;
}
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', '', false);
}
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, Object.assign({ prefix: `${this.prefix}:${moduleName}:` }, this.options));
}
}
exports.Logger = Logger;
exports.basedLogger = new Logger(consoleLogger);