UNPKG

bit-bin

Version:

<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b

113 lines (85 loc) 2.42 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.LogLevel = void 0; function _defineProperty2() { const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); _defineProperty2 = function () { return data; }; return data; } function _events() { const data = require("events"); _events = function () { return data; }; return data; } function _logger() { const data = _interopRequireDefault(require("../../logger/logger")); _logger = function () { return data; }; return data; } let LogLevel; exports.LogLevel = LogLevel; (function (LogLevel) { LogLevel["INFO"] = "info"; LogLevel["WARN"] = "warn"; LogLevel["ERROR"] = "error"; LogLevel["DEBUG"] = "debug"; })(LogLevel || (exports.LogLevel = LogLevel = {})); class Logger { constructor() { (0, _defineProperty2().default)(this, "eventEmitter", new (_events().EventEmitter)()); (0, _defineProperty2().default)(this, "subscribers", []); } createLogPublisher(extensionName) { if (extensionName && !this.subscribers.includes(extensionName)) { this.subscribers.push(extensionName); } const emitter = this.eventEmitter; const emitAndLogToFile = (componentId, messages, logLevel) => { emitter.emit(extensionName, { componentId, messages, logLevel }); _logger().default[logLevel](`${componentId}, ${messages}`); }; return { info(componentId, messages) { emitAndLogToFile(componentId, messages, 'info'); }, warn(componentId, messages) { emitAndLogToFile(componentId, messages, 'warn'); }, error(componentId, messages) { emitAndLogToFile(componentId, messages, 'error'); }, debug(componentId, messages) { emitAndLogToFile(componentId, messages, 'debug'); } }; } subscribe(extensionName, cb) { this.eventEmitter.on(extensionName, logEntry => { cb(logEntry); }); } subscribeAll(cb) { this.subscribers.forEach(extensionName => { this.eventEmitter.on(extensionName, logEntry => { cb(logEntry); }); }); } unsubscribe(extensionName) { this.eventEmitter.removeAllListeners(extensionName); } } exports.default = Logger;