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
JavaScript
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;
;