UNPKG

@a2r/telemetry

Version:

Telemetry library for the A2R Framework

145 lines (144 loc) 5.01 kB
"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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setLevel = exports.verbose = exports.alert = exports.warn = exports.error = exports.info = exports.configForCurrentEnvironment = exports.resetDefaultLogLevel = void 0; const chalk_1 = __importDefault(require("chalk")); const winston_1 = __importStar(require("winston")); const getEnvironment_1 = __importDefault(require("../utils/getEnvironment")); /** * Function removes the colors for the message */ const removeColors = (0, winston_1.format)((info) => { const newInfo = { message: info.message, level: info.level }; newInfo.message = newInfo.message .replace( // eslint-disable-next-line no-control-regex /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '') // eslint-disable-next-line no-control-regex .replace(new RegExp('\b', 'g'), ''); return newInfo; }); /** * Winston transport model definition */ const transports = [ new winston_1.default.transports.File({ filename: 'log/error.log', level: 'error', format: removeColors(), }), new winston_1.default.transports.File({ filename: 'log/combined.log', format: winston_1.format.combine(removeColors(), winston_1.format.json()), }), ]; let defaultLogLevel = 'info'; /** * Set the default level depending of the environment: * verbose for development and info por production */ const resetDefaultLogLevel = () => { defaultLogLevel = (0, getEnvironment_1.default)() === 'development' ? 'verbose' : 'info'; }; exports.resetDefaultLogLevel = resetDefaultLogLevel; (0, exports.resetDefaultLogLevel)(); /** * Create the winston logger */ const logger = winston_1.default.createLogger({ level: defaultLogLevel, format: winston_1.format.json(), transports, }); const configForCurrentEnvironment = () => { /** * If we're not in production then log to the `console` with the format: * `${info.level}: ${info.message} JSON.stringify({ ...rest })` */ // if (getEnvironment() !== 'production') { logger.add(new winston_1.default.transports.Console({ format: winston_1.default.format.simple(), })); // } }; exports.configForCurrentEnvironment = configForCurrentEnvironment; (0, exports.configForCurrentEnvironment)(); /** * Prefix to delete previous chars */ const prefix = ''.padStart(10, '\b'); /** * Logs information * @param {string} message message to log * @param {object} meta metadata associated with the event */ const info = (message, meta) => { logger.info(`${prefix}${message}`, meta); }; exports.info = info; /** * Logs an error * @param {string} message error to log * @param {object} meta metadata associated with the event */ const error = (message, meta) => { logger.error(`${prefix}${chalk_1.default.red.bold('[ERROR]')} ${message}`, meta); }; exports.error = error; /** * Logs a warning * @param {string} message warning to log * @param {object} meta metadata associated with the event */ const warn = (message, meta) => { logger.warn(`${prefix}${chalk_1.default.yellow.bold('[WARN]')} ${message}`, meta); }; exports.warn = warn; /** * Logs an alert * @param {string} message alert to log * @param {object} meta metadata associated with the event */ const alert = (message, meta) => { logger.error(`${prefix}${chalk_1.default.red.bold('[ALERT]')} ${message}`, meta); }; exports.alert = alert; /** * Logs verbose information * @param {string} message information to log * @param {object} meta metadata associated with the event */ const verbose = (message, meta) => { logger.verbose(`${prefix}${message}`, meta); }; exports.verbose = verbose; /** * Filters the messages to log for a certain level * @param {LogLevel} level minimum log level to be displayed that can be * in order of relevance: error, warn, info, verbose or debug. */ const setLevel = (level) => { logger.level = level; }; exports.setLevel = setLevel;