UNPKG

@chainsafe/eth2.0-utils

Version:

Utilities required across multiple lodestar packages

134 lines (104 loc) 4.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WinstonLogger = void 0; var _winston = require("winston"); var _interface = require("./interface"); var _chalk = _interopRequireDefault(require("chalk")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } class WinstonLogger { constructor(options) { _defineProperty(this, "winston", void 0); _defineProperty(this, "_level", void 0); _defineProperty(this, "_silent", void 0); options = _objectSpread({ level: _interface.LogLevel[_interface.defaultLogLevel], module: "" }, options); this.winston = (0, _winston.createLogger)({ level: _interface.LogLevel[_interface.LogLevel.verbose], // log level switching handled in `createLogEntry` defaultMeta: { module: options.module || "" }, transports: [new _winston.transports.Console({ format: _winston.format.combine(_winston.format.colorize(), _winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), _winston.format.printf(info => { const paddingBetweenInfo = 30; const infoString = info.module || info.namespace || ""; const infoPad = paddingBetweenInfo - infoString.length; return "".concat(info.timestamp, " [").concat(infoString.toUpperCase(), "] ").concat(info.level.padStart(infoPad), ": ").concat(info.message); })), handleExceptions: true })], exitOnError: false }); //@ts-ignore this._level = _interface.LogLevel[options.level]; this._silent = false; if (typeof process !== "undefined" && typeof process.env !== "undefined") { this._silent = process.env.LODESTAR_SILENCE === "true"; } } debug(message, context) { this.createLogEntry(_interface.LogLevel.debug, message, context); } info(message, context) { this.createLogEntry(_interface.LogLevel.info, message, context); } important(message, context) { this.createLogEntry(_interface.LogLevel.info, _chalk.default.red(message), context); } error(message, context) { this.createLogEntry(_interface.LogLevel.error, message, context); } warn(message, context) { this.createLogEntry(_interface.LogLevel.warn, message, context); } verbose(message, context) { this.createLogEntry(_interface.LogLevel.verbose, message, context); } silly(message, context) { this.createLogEntry(_interface.LogLevel.silly, message, context); } set level(level) { this.winston.level = _interface.LogLevel[level]; this._level = level; } get level() { return this._level; } set silent(silent) { this._silent = silent; } get silent() { return this._silent; } child(options) { const logger = Object.create(WinstonLogger.prototype); const winston = this.winston.child({ namespace: options.module }); return Object.assign(logger, { winston, _level: options.level, _silent: this._silent }); } createLogEntry(level, message, context = {}) { if (this.silent || level > this._level) { return; } if (typeof message === "object") { this.winston.log(_interface.LogLevel[level], JSON.stringify(message)); } else { this.winston.log(_interface.LogLevel[level], message, context); } } } exports.WinstonLogger = WinstonLogger; //# sourceMappingURL=winston.js.map