request-logger.js 2.1 KB
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();