const winston = require('winston'); const fs = require('fs'); const moment = require('moment'); let logDir = 'logs'; // directory path you want to set if ( !fs.existsSync( logDir ) ) { // Create the directory if it does not exist fs.mkdirSync( logDir ); } function RequestLogger() { this.fileTransport = new winston.transports.File({ timestamp: function() { return moment().format('YYYY-MM-DDTHH:mm:ss.SSS'); }, json: false, filename: 'logs/app.log', maxsize: 10240000, maxFiles: 99, tailable: true }); this.logger = winston.createLogger({ transports: [this.fileTransport] }); this.logPrefix = function(session) { let userId = ''; let sessionId = session.id || ''; let reqId = session.reqId || ''; let msg = `phoenix-partner - :: ## ${userId} - ${sessionId} - ${reqId} ## `; return msg; }; } RequestLogger.prototype.logRequest = function(reqMethod, reqUrl, session, data, header) { header = JSON.stringify(header); data = JSON.stringify(data); let msg = this.logPrefix(session) + `BE Send HTTP ${reqMethod} ${reqUrl} request-header: ${header} request-body: ${data}`; this.logger.info(msg); }; RequestLogger.prototype.logResponse = function(reqMethod, reqUrl, session, data, header) { header = JSON.stringify(header); data = JSON.stringify(data); let msg = this.logPrefix(session) + `BE Receive HTTP ${reqMethod} ${reqUrl} response-header: ${header} response-body: ${data}`; this.logger.info(msg); }; RequestLogger.prototype.logSqlQuery = function(session, data) { data = JSON.stringify(data); let msg = this.logPrefix(session) + `BE Send SQL Query: ${data}`; this.logger.info(msg); }; RequestLogger.prototype.logSqlResult = function(session, data) { data = JSON.stringify(data); let msg = this.logPrefix(session) + `BE Receive SQL Result: ${data}`; this.logger.info(msg); }; RequestLogger.prototype.debug = function(msg) { msg = this.logPrefix(session) + ' ' + msg; this.logger.debug(msg); }; module.exports = new RequestLogger();