UNPKG

@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.

64 lines (63 loc) 2.08 kB
export default 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; } } }