UNPKG

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
"use strict"; /** * 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;