transaction-logger
Version:
This is a custom logging library based on winston.
142 lines (141 loc) • 6.44 kB
JavaScript
;
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;
}