@a2r/telemetry
Version:
Telemetry library for the A2R Framework
145 lines (144 loc) • 5.01 kB
JavaScript
;
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;