UNPKG

transaction-logger

Version:

This is a custom logging library based on winston.

142 lines (141 loc) 6.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = void 0; var express_http_context_1 = __importDefault(require("express-http-context")); var path_1 = __importDefault(require("path")); var winston_1 = require("winston"); require("winston-syslog"); var file_utils_1 = __importDefault(require("./utils/file-utils")); var logFolder = process.env.LOG_LOCAL_FOLDER || "./logs/"; var exeptionsFileName = process.env.LOG_LOCAL_EXCEPTION_FILE_NAME || 'exceptions.log'; var logFileName = process.env.LOG_LOCAL_FILE_NAME || 'logs.log'; var logEnvironment = process.env.LOG_ENVIRONMENT || 'console'; var logLevel = process.env.LOG_LEVEL || 'info'; var applicationName = process.env.SERVICE_NAME || ''; var execptionsFilePath = path_1.default.join(logFolder, exeptionsFileName); var regularLogFilePath = path_1.default.join(logFolder, logFileName); var Logger = /** @class */ (function () { function Logger(globalFilename) { var _this = this; var colorizer = winston_1.format.colorize(); this.selectedTransports = []; this.exceptionTransports = []; var customLevels = { levels: { crit: 0, error: 1, warn: 2, info: 3, debug: 4, }, }; var defaultLoggingFormat = winston_1.format.combine(winston_1.format.simple(), winston_1.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss', }), winston_1.format.printf(function (info) { return colorizer.colorize(info.level, "[".concat(info.timestamp, "][").concat(info.level, "][").concat(info.applicationName, "][").concat(info.filenamePath, "]#").concat(info.message)); })); var filenamePath = file_utils_1.default.getFolderAndFilename(globalFilename); var consoleLogging = new winston_1.transports.Console({ format: defaultLoggingFormat, level: logLevel, }); // Default transport always to console this.selectedTransports.push(consoleLogging); this.exceptionTransports.push(consoleLogging); // Defining extra transports based on Environment variable LOG_ENVIRONMENT if (logEnvironment.toLowerCase() === 'local') { var fileLogging = new winston_1.transports.File({ filename: regularLogFilePath, format: defaultLoggingFormat, }); var exceptionsfileLogging = new winston_1.transports.File({ filename: execptionsFilePath, format: defaultLoggingFormat, }); this.selectedTransports.push(fileLogging); this.exceptionTransports.push(exceptionsfileLogging); } this.logger = (0, winston_1.createLogger)({ level: logLevel, levels: customLevels.levels, format: defaultLoggingFormat, defaultMeta: { applicationName: applicationName, filenamePath: filenamePath, }, transports: this.selectedTransports, exceptionHandlers: this.exceptionTransports, }); var prepareMessage = function (message, initTime, endTime, guid) { var separator = ' >>> '; var transactionId = express_http_context_1.default.get('Transaction-ID'); separator = transactionId ? "[Transaction-ID:".concat(transactionId, "]").concat(separator) : separator; var messageToLog = ''; if (isNaN(initTime)) { messageToLog = buildMessageWithoutTime(initTime, messageToLog, separator, message); } else { if (isNaN(endTime)) { messageToLog = buildMessageWithInitTime(initTime, endTime, messageToLog, separator, message); } else { messageToLog = buildMessageWithBothTime(endTime, initTime, guid, messageToLog, separator, message); } } return messageToLog; }; this.info = function (message, initTime, endTime, guid) { return _this.logger.info(prepareMessage(message, initTime, endTime, guid)); }; this.debug = function (message, initTime, endTime, guid) { return _this.logger.debug(prepareMessage(message, initTime, endTime, guid)); }; this.warn = function (message, initTime, endTime, guid) { return _this.logger.warn(prepareMessage(message, initTime, endTime, guid)); }; this.error = function (message, initTime, endTime, guid) { return _this.logger.error(prepareMessage(message, initTime, endTime, guid)); }; this.fatal = function (message, initTime, endTime, guid) { return _this.logger.crit(prepareMessage(message, initTime, endTime, guid)); }; } return Logger; }()); exports.Logger = Logger; function buildMessageWithBothTime(endTime, initTime, guid, messageToLog, separator, message) { var difference = endTime - initTime; if (typeof guid !== 'undefined' && guid !== null) { var _guid = guid; messageToLog = "[".concat(difference, "ms][Guid:").concat(_guid, "]").concat(separator).concat(message); } else { messageToLog = "[".concat(difference, "ms]").concat(separator).concat(message); } return messageToLog; } function buildMessageWithInitTime(initTime, endTime, messageToLog, separator, message) { var _endTime = new Date().getTime(); var difference = _endTime - initTime; if (typeof endTime !== 'undefined' && endTime !== null) { var _guid = endTime; messageToLog = "[".concat(difference, "ms][Guid:").concat(_guid, "]").concat(separator).concat(message); } else { messageToLog = "[".concat(difference, "ms]").concat(separator).concat(message); } return messageToLog; } function buildMessageWithoutTime(initTime, messageToLog, separator, message) { if (typeof initTime !== 'undefined' && initTime !== null) { var _guid = initTime; messageToLog = "[Guid:".concat(_guid, "]").concat(separator).concat(message); } else { messageToLog = separator + message; } return messageToLog; }