the-logs
Version:
Stop using console.log and use this simple logs API for your daily proccess.
117 lines (116 loc) • 5.63 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AbstractLogger = void 0;
const Types = __importStar(require("./types"));
const writers_1 = require("./writers");
class AbstractLogger {
constructor(_props) {
this._props = _props;
this._writers = new Set();
this._temporaryConfigs = {};
this.tracking = [];
this.allowLog = (level) => {
var _a;
const innerConfigs = this._temporaryConfigs || this._configs;
const innerLevel = innerConfigs.logLevel || "debug" /* Debug */;
return ((_a = Types.LogLevelNumber[innerLevel]) !== null && _a !== void 0 ? _a : this._level) <= Types.LogLevelNumber[level];
};
this.getProps = () => (Object.assign(Object.assign({}, this._props), this._temporaryConfigs));
this.setConfigs = (params = {}) => (this._temporaryConfigs = Object.assign(Object.assign({}, this._configs), params));
const { logLevel = "debug" /* Debug */, writers = [Types.Writer.CONSOLE], interUseCase, useCase } = _props;
this._configs = { interUseCase, logLevel, useCase };
this._level = Types.LogLevelNumber[logLevel];
writers.forEach(writer => {
const writerInstance = writers_1.Factory.getWriter(writer, _props);
this._writers.add(writerInstance);
});
}
debug(params) {
return __awaiter(this, void 0, void 0, function* () {
const message = this.getMessage(params);
const logLevel = "debug" /* Debug */;
const props = Object.assign(Object.assign({}, this.getProps()), { logLevel });
if (this.allowLog(logLevel))
this._writers.forEach(writer => writer.log(message, props));
});
}
notice(params) {
return __awaiter(this, void 0, void 0, function* () {
const message = this.getMessage(params);
const logLevel = "notice" /* Notice */;
const props = Object.assign(Object.assign({}, this.getProps()), { logLevel });
if (this.allowLog(logLevel))
this._writers.forEach(writer => writer.log(message, props));
});
}
info(params) {
return __awaiter(this, void 0, void 0, function* () {
const message = this.getMessage(params);
const logLevel = "info" /* Info */;
const props = Object.assign(Object.assign({}, this.getProps()), { logLevel });
if (this.allowLog(logLevel))
this._writers.forEach(writer => writer.log(message, props));
});
}
warning(params) {
return __awaiter(this, void 0, void 0, function* () {
const message = this.getMessage(params);
const logLevel = "warning" /* Warning */;
const props = Object.assign(Object.assign({}, this.getProps()), { logLevel });
if (this.allowLog(logLevel))
this._writers.forEach(writer => writer.log(message, props));
});
}
error(params) {
return __awaiter(this, void 0, void 0, function* () {
const message = this.getMessage(params);
const logLevel = "error" /* Error */;
const props = Object.assign(Object.assign({}, this.getProps()), { logLevel });
if (this.allowLog(logLevel))
this._writers.forEach(writer => writer.log(message, props));
});
}
critical(params) {
return __awaiter(this, void 0, void 0, function* () {
const message = this.getMessage(params);
const logLevel = "critical" /* Critical */;
const props = Object.assign(Object.assign({}, this.getProps()), { logLevel });
if (this.allowLog(logLevel))
this._writers.forEach(writer => writer.log(message, props));
});
}
getMessage(params) {
const _params = typeof params === 'string' ? { message: params } : params;
this.tracking.push(_params.message);
return _params;
}
}
exports.AbstractLogger = AbstractLogger;