easy-config-logger
Version:
easy-config-logger is the logger with easy configuration. It is designed for both readability in development and json output in production.
128 lines (127 loc) • 4.01 kB
JavaScript
;
/**
* Logger
*/
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var winston = __importStar(require("winston"));
var config_1 = require("./config");
var constants_1 = require("./constants");
/**
* Logger Class
*/
var Logger = /** @class */ (function () {
/**
* @param options - logger options
* @param baseMeta - meta that always included
*/
function Logger(options, baseMeta) {
if (baseMeta === void 0) { baseMeta = {}; }
this.baseMeta = baseMeta;
// validation
this.validateParams(options);
// create logger
this.logger = this.createWinstonLogger(options);
}
/**
* log with debug level
*
* @param message - log message
* @param meta - log metadata
*/
Logger.prototype.debug = function (message, meta) {
if (meta === void 0) { meta = {}; }
var metas = __assign({}, this.baseMeta, meta);
this.logger.debug(message, metas);
};
/**
* log with info level
*
* @param message - log message
* @param meta - log metadata
*/
Logger.prototype.info = function (message, meta) {
if (meta === void 0) { meta = {}; }
var metas = __assign({}, this.baseMeta, meta);
this.logger.info(message, metas);
};
/**
* log with warn level
*
* @param message - log message
* @param meta - log metadata
*/
Logger.prototype.warn = function (message, meta) {
if (meta === void 0) { meta = {}; }
var metas = __assign({}, this.baseMeta, meta);
this.logger.warn(message, metas);
};
/**
* log with error level
*
* @param message - log message
* @param meta - log metadata
*/
Logger.prototype.error = function (message, meta) {
if (meta === void 0) { meta = {}; }
var metas = __assign({}, this.baseMeta, meta);
this.logger.error(message, metas);
};
/**
* log with test level
*
* @param message - log message
* @param meta - log metadata
*/
Logger.prototype.test = function (message, meta) {
if (meta === void 0) { meta = {}; }
var metas = __assign({}, this.baseMeta, meta);
this.logger.log('test', message, metas);
};
/**
* Validate Logger Params
*
* @param options - logger options
*/
Logger.prototype.validateParams = function (options) {
var env = options.env, level = options.level;
if (!Object.keys(constants_1.levels).includes(level)) {
throw new Error("Log Level '" + level + "' is not available");
}
if (!constants_1.envs.includes(env)) {
throw new Error("Environment '" + env + "' is not available");
}
};
/**
* create logger with winston
*
* @param options - logger options
*/
Logger.prototype.createWinstonLogger = function (options) {
var env = options.env, level = options.level;
var transportConfiguration = constants_1.prodEnvs.includes(env) ?
config_1.transportConfig.prod : config_1.transportConfig.dev;
return new (winston.Logger)({
level: level,
levels: constants_1.levels,
colors: constants_1.colors,
transports: [new (winston.transports.Console)(transportConfiguration)]
});
};
return Logger;
}());
exports.Logger = Logger;