llamajs
Version:
A dynamic logger for the dynamic developer
50 lines • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const loggerConfigs_1 = require("./loggerConfigs");
class Logger {
constructor(config) {
this.configure(config || loggerConfigs_1.defaultLoggerConfig);
}
init() {
return this.initTransports();
}
initTransports() {
const transportInitPromises = this.config.transports.map(transport => transport.init());
return Promise.all(transportInitPromises);
}
configure(config) {
if (this.isConfigValid(config)) {
this.config = config;
}
else {
throw new Error(`[Invalid Logger Config]:
Transport includes levels that the logger does not have`);
}
}
isConfigValid(config) {
for (let transIndex = 0; transIndex < config.transports.length; transIndex++) {
const transportSeverityLevels = config.transports[transIndex].config.levels;
const loggerSeverityLevels = config.levels;
if (!transportSeverityLevels.every(severityLevel => Object.values(loggerSeverityLevels).includes(severityLevel))) {
return false;
}
}
return true;
}
sendToTransports(message, messageConfig) {
this.config.transports.forEach((transport) => {
transport.send(message, messageConfig);
});
}
log(logMessage, messageConfig) {
this.sendToTransports(logMessage, messageConfig);
}
removeTransports() {
this.config.transports.forEach((transport) => {
transport.close();
});
this.config.transports = [];
}
}
exports.Logger = Logger;
//# sourceMappingURL=logger.js.map