citi-casher-session-engine
Version:
Module for multiple authentication methods for CITI Casher, deviceID and aurum
40 lines (32 loc) • 1.19 kB
JavaScript
const transactionContext = require("./transactionContext");
const { createLogger, format, transports } = require("winston");
const { combine, colorize, timestamp, printf, errors } = format;
function customFormat() {
const formatMessage = (info) => `${info.timestamp} ${info.level} ${info.message}`;
const formatError = (info) => `${info.timestamp} ${info.level} ${info.message}\n\n${info.stack}\n`;
const formatter = (info) => info instanceof Error ? formatError(info) : formatMessage(info);
return combine(colorize(), printf(formatter));
}
const logger = createLogger({
format: combine(
colorize({ all: true }),
timestamp({ format: "YYYY-MM-DD hh:mm:ss.SSS" }),
errors({ stack: true }),
customFormat()
),
transports: [new transports.Console()],
exitOnError: false,
});
const info = (...message) => {
const transactionId = transactionContext.getTransactionId();
logger.info(`${transactionId} :: ${message}`);
};
const error = (message) => {
const transactionId = transactionContext.getTransactionId();
logger.error(`${transactionId} :: ${message}`);
};
module.exports = {
logger,
info,
error,
};