@glue42/bbg-market-data
Version:
A high-level API that wraps existing Glue42 Bloomberg Bridge Market Data interop methods. The API is based on the jBloomberg open source wrapper.
67 lines • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class ConsoleLogger {
constructor(name, options) {
this.name = name;
this.options = options;
}
trace(message) {
this.logFn(message, "trace");
}
debug(message) {
this.logFn(message, "debug");
}
info(message) {
this.logFn(message, "info");
}
log(message) {
this.logFn(message, "log");
}
warn(message) {
this.logFn(message, "warn");
}
error(message) {
if (message instanceof Error) {
message = message.message + "\n" + message.stack;
}
this.logFn(message, "error");
}
logFn(message, level) {
const logLevelsInOrder = ["trace", "debug", "log", "info", "warn", "error"];
const logLevel = logLevelsInOrder.includes(this.options.logLevel) ? this.options.logLevel : "info";
const levelIdx = logLevelsInOrder.indexOf(level);
const restrictionIdx = logLevelsInOrder.indexOf(logLevel);
const canLog = levelIdx >= restrictionIdx;
if (!canLog) {
return;
}
const date = new Date();
const time = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}:${date.getMilliseconds()}`;
const loggerName = this.name ? "[" + String(this.name) + "] " : "";
const prefix = `[${time}] [${level}] ${loggerName}`;
switch (level) {
case "log":
console.log(prefix, message);
break;
case "info":
console.info(prefix, message);
break;
case "debug":
console.debug(prefix, message);
break;
case "trace":
console.log(prefix, message);
break;
case "warn":
console.warn(prefix, message);
break;
case "error":
console.error(prefix, message);
break;
default:
break;
}
}
}
exports.default = ConsoleLogger;
//# sourceMappingURL=console.js.map