const os = require("os"); var cfg = require('./config'); var utils = require('./utils'); var conf = cfg.get("configlog"); conf.projectName = cfg.get("appName"); var logg = require('commonlog-kb'); var constants = require('./constants'); var log4js = require('log4js'); var appenders = {}; appenders[conf.projectName] = { type: 'file', filename: conf.detail.path+"/"+os.hostname() + '_'+conf.projectName+'.detail' }; log4js.configure({ appenders: appenders , categories: { default: { appenders: [conf.projectName], level: 'info' } } }); var logger4jDetail = log4js.getLogger(conf.projectName); var logger = []; const mapLog = {}; logger.startlog = function (req,cmdData,session,identity) { var start = { session : utils.undefinedToNull(session), cmd : cmdData, identity : utils.undefinedToNull(identity) }; mapLog[req.id].start = start; } logger.stat = function (msg){ logg.stat(msg); } logger.log = function (msg,type) { if(!type) type = 'debug'; type = type.toLowerCase(); switch(type) { case 'debug': logg.debug(msg); break; case 'info': logg.info(msg); break; case 'warn': logg.warn(msg); break; case 'error': logg.error(msg); break; default: logg.debug(msg); } console.log(msg); } logger.addSuccessSummary = function (req,nodeData,cmdData,result) { summary = { node : utils.undefinedToNull(nodeData), cmd : cmdData, resultCode : result.resultCode, resultDescription : result.resultDescription, type : constants.SUCCESS }; mapLog[req.id].summaryList.push(summary); } logger.addErrorSummary = function (req,nodeData,cmdData,result) { summary = { node : utils.undefinedToNull(nodeData), cmd : cmdData, resultCode : result.resultCode, resultDescription : result.resultDescription, type : constants.ERROR }; mapLog[req.id].summaryList.push(summary); } logger.logSummary = function (req,response) { var start = mapLog[req.id].start; var summaryList = mapLog[req.id].summaryList; var log = logg.summary(start.session,start.cmd,start.identity); var row; for (let index = 0; index < summaryList.length; index++) { row = summaryList[index]; if(row.type === constants.SUCCESS){ log.addSuccessBlock(row.node,row.cmd,row.resultCode,row.resultDescription); } else { log.addErrorBlock(row.node,row.cmd,utils.undefinedToNull(row.resultCode),utils.undefinedToNull(row.resultDescription)); } } if(response){ log.end(response.resultCode,response.resultDescription) } else { log.end() } } logger.startEC = function(req) { var objectLog = { summaryList : [], start : {}, detail : {}, startTime : new Date() } mapLog[req.id] = objectLog; var newLine = "\r\n"; var messageRes = ''; var startTime = mapLog[req.id].startTime; if(req.body) { if(typeof req.body === 'string') body = req.bod; else body = JSON.stringify(req.body); } var header = ""; if(req.headers) { if(typeof req.headers === 'string') header = req.headers; else header = JSON.stringify(req.headers); } messageRes += newLine+newLine+"#====> Incoming Message <====# "; messageRes += newLine+"Session : "+req.id; messageRes += newLine+"Url : "+req.url; messageRes += newLine+"Method : "+req.method; messageRes += newLine+"Header : "+header; messageRes += newLine+"Body : "+body; messageRes += newLine+"Time in : "+startTime.toISOString(); messageRes += newLine // logg.debug(messageRes); } logger.endEC = function(req,res) { var newLine = "\r\n"; var messageRes = ''; var startTime = mapLog[req.id].startTime; var endTime = new Date(); var body = ""; if(res.resBody) { if(typeof res.resBody === 'string') body = res.resBody; else body = JSON.stringify(res.resBody); } var header = ""; if(res.req.headers) { if(typeof res.req.headers === 'string') header = res.req.headers; else header = JSON.stringify(res.req.headers); } messageRes += newLine+newLine+"#====> Outgoing Message <====# "; messageRes += newLine+"Session : "+req.id; messageRes += newLine+"Header : "+header; messageRes += newLine+"Body : "+body; messageRes += newLine+"Time out : "+endTime.toISOString(); messageRes += newLine+"Use times : "+Math.abs(endTime - startTime)+" ms"; // logg.debug(messageRes); messageRes += newLine } //detail logger.detailRequestFE = function(req) { // console.log(req); var protocal = "HTTP"; var method = req.method; var url = req.headers.host+req.originalUrl; var body = JSON.stringify(req.body); logger4jDetail.info(logPrefix(req)+protocal+" "+method+" "+url+" Request from FE - body: "+body); } logger.detailResponseFE = function(req) { var protocal = "HTTP"; var method = req.method; var url = req.headers.host+req.originalUrl; var body = JSON.stringify(req.body); logger4jDetail.info(logPrefix(req)+protocal+" "+method+" "+url+" Response to FE - body: "+body); } logger.detailSqlQuery = function(req,collection,data) { logger4jDetail.info(logPrefix(req)+"BE Send Mongo Collection: \""+collection+"\" Query: "+JSON.stringify(data)); } logger.detailSqlResult = function(req,collection,data) { logger4jDetail.info(logPrefix(req)+"BE Receive Mongo Collection: \""+collection+"\" Result: "+JSON.stringify(data)); } logger.detailRequestBE = function(req,data) { var protocal = data.protocal; var method = data.method; var url = data.url; var header = JSON.stringify(data.header); var body = JSON.stringify(data.body); logger4jDetail.info(logPrefix(req)+"BE Send "+protocal+" "+method+" "+url+" request-header: "+header+" request-body:"+body); } logger.detailResponseBE = function(req,data) { var protocal = data.protocal; var method = data.method; var url = data.url; var header = JSON.stringify(data.header); var body = JSON.stringify(data.body); logger4jDetail.info(logPrefix(req)+"BE Receive "+protocal+" "+method+" "+url+" response-header: "+header+" response-body:"+body); } function logPrefix(req) { var userName = "userName"; var sessionID = "sessionID"; var session = "session"; return ":: ## "+userName+" - "+sessionID+" - "+session+ " ## "; } module.exports = logger;