log.js 11 KB
var env = process.env.NODE_ENV || 'development'; 
var cfg = require('../../config/config.js').get(env);

var conf = {};
conf.log = cfg.log;
conf.log.projectName = cfg.app_name;

var logg = require('commonlog-kb').init(conf);

// wait log stats
// logg.stat('stat_name');

var logger = [];
var summaryList = [];
var start = {};
var detail = {};
var startTime;

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.startlog = function (cmdData,session,identity)
{
    start = {
        session : session,
        cmd : cmdData,
        identity : identity   
    };
}

logger.addSuccessSummary = function (nodeData,cmdData,resultCode,developerMessage)
{
    summary = {
        node : undefinedToNull(nodeData),
        cmd : cmdData,
        resultCode : resultCode,
        resultDesc : developerMessage,
        type : "success"      
    };
    summaryList.push(summary);
    // console.log(summary);
}

logger.addErrorSummary = function (nodeData,cmdData,resultCode,developerMessage)
{
    summary = {
        node : undefinedToNull(nodeData),
        cmd : cmdData,
        resultCode : resultCode,
        resultDesc : developerMessage,
        type : "error"       
    };
    summaryList.push(summary);
    // console.log(summary);
}

logger.logSummary = function (response)
{
    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 === "success"){
            log.addSuccessBlock(row.node,row.cmd,row.resultCode,row.resultDesc);
        } else {
            log.addErrorBlock(row.node,row.cmd,row.resultCode,row.resultDesc);
        }
    }

    if(response){
        log.end(response.resultCode,response.developerMessage)
    } else {
        log.end()
    }
}

var addlogDetailData = function(inputType,node,cmd,type,rawData,data){
    if(inputType == 'input')
    {
        if(rawData)
        {
            var raw = {
                body : rawData.body,
                query : rawData.query,
                params : rawData.params,
                response : rawData.response
            };
        } else {
            var raw = { 
            };
        }

        detail.input = {
            node : undefinedToNull(node),
            cmd : cmd,
            type : type,
            rawData : raw,
            data : data
        };

        // console.log(detail.input);
    }
    else if(inputType == 'output')
    {
        detail.output = {
            node : undefinedToNull(node),
            cmd : cmd,
            type : type,
            rawData : rawData,
            data : data
        };

        var log = logg.detail(start.session, start.cmd, start.identity);
        log.addInput( detail.input.node, detail.input.cmd, detail.input.type, detail.input.rawData, detail.input.data );
        log.addOutput( detail.output.node, detail.output.cmd, detail.output.type, detail.output.rawData, detail.output.data );
        log.end();
        // console.log(detail.output);
    }
}

var logDetailData = {
    addInput : function(node,cmd,type,rawData,data){addlogDetailData('input',node,cmd,type,rawData,data)},
    addOutput : function(node,cmd,type,rawData,data){addlogDetailData('output',node,cmd,type,rawData,data)}
    // write : function ()
    // {
    //     var log = logg.detail(start.session, start.cmd, start.identity);
    //     log.addInput( detail.input.node, detail.input.cmd, detail.input.type, detail.input.rawData, detail.input.data );
    //     log.addOutput( detail.output.node, detail.output.cmd, detail.output.type, detail.output.rawData, detail.output.data );
    //     log.end();
    // }
};

logger.logDetail = logDetailData;

var undefinedToNull = function(data){
    if(!data){
        data = 'null';
    } else {
        data = data;
    }

    return data;
}

logger.startEC = function(req)
{
    var newLine = "\r\n";
    var messageRes = '';
    startTime = new Date();

    // if(!mapTime[req.headers.host])
    // {
    //     mapTime[req.headers.host]
    // }
    


    // console.log(Object.keys(req));
    // console.log(req.headers);
    // console.log(req.body);
    
    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+"Header : "+header;
    messageRes += newLine+"Body : "+body;
    messageRes += newLine+"Time in : "+startTime.toISOString();
    messageRes += newLine

    logger.log(messageRes);
};

logger.endEC = function(res)
{
   
    var newLine = "\r\n";
    var messageRes = '';
    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+"Header : "+header;
    messageRes += newLine+"Body : "+body;
    messageRes += newLine+"Time out : "+endTime.toISOString();
    messageRes += newLine+"Use times : "+Math.abs(endTime - startTime)+" ms";


    messageRes += `
    ________________________________________________________________________________________________________________________
    __________#####___________________________________#####___________________________________#####_________________________
    _________##____#_________________________________##____#_________________________________##____#________________________
    ________##______#_______________________________##______#_______________________________##______#_______________________
    ________#________#______________________________#________#______________________________#________#______________________
    _________________#######_________________________________#######_________________________________#######________________
    _________________#########_______________________________#########_______________________________#########______________
    __________##_____###########______________________##_____###########______________________##_____###########____________
    ___________#_____#############_____________________#_____#############_____________________#_____#############__________
    _________________##############___###____________________##############___###____________________##############___###___
    _______##________###############_##_##_________##________###############_##_##_________##________###############_##_##__
    ______###_______#################____#________###_______#################____#________###_______#################____#__
    ____#######___##________#########____#______#######___##________#########____#______#######___##________#########____#__
    ___#___####___#______________###_____#_____#___####___#______________###_____#_____#___####___#______________###_____#__
    ___#___##______#__#__________________#_____#___##______#__#__________________#_____#___##______#__#__________________#__
    ___#_________________________________#_____#_________________________________#_____#_________________________________#__
    ___#______________##_________________#_____#______________##_________________#_____#______________##_________________#__
    __#___________#_________________#___#_____#___________#_________________#___#_____#___________#_________________#___#___
    ___#__________#________________###__#______#__________#________________###__#______#__________#________________###__#___
    ____##_______#_________________#_###________##_______#_________________#_###________##_______#_________________#_###____
    _____#________________________##_____________#________________________##_____________#________________________##________
    _____#________________________#______________#________________________#______________#________________________#_________
    _____#_______________________#_______________#_______________________#_______________#_______________________#__________
    _____#______________________##_______________#______________________##_______________#______________________##__________
    _____##_____________________#________________##_____________________#________________##_____________________#___________
    ______#____________________#__________________#____________________#__________________#____________________#____________
    ______#___________________#___________________#___________________#___________________#___________________#_____________
    _______#_________________#_____________________#_________________#_____________________#_________________#______________
    _______##_______________#______________________##_______________#______________________##_______________#_______________
    ________##____________##________________________##____________##________________________##____________##________________
    __________##________###___________________________##________###___________________________##________###_________________
    ____________#########_______________________________#########_______________________________#########___________________
    ________________________________________________________________________________________________________________________
    
    ________________________________________________________________________________________________________________________
    `;
    
    logger.log(messageRes);
    messageRes += newLine
};


module.exports = logger;



// var s1 = logg.summary('session1', 'cmd', 'identity');
// s1.addSuccessBlock('node', 'a', '20000', 'resultDesc');
// s1.addSuccessBlock('node', 'b', 'resultCode', 'resultDesc');
// s1.addSuccessBlock('node1', 'c', 'resultCode', 'resultDesc');
// s1.addSuccessBlock('node1', 'cmd', 'resultCode', 'resultDesc');

// s1.addSuccessBlock('node1', 'cmd', 'resultCode', 'resultDesc 1');
// s1.addSuccessBlock('node1', 'cmd', 'resultCode', 'resultDesc 1');
// var s2 = logg.summary('session2', 'cmd', 'identity');

// s1.end('20000','sucesss');
// s2.end();

//type// - REQ, RES, RES_TIMEOUT, REQ_RETRY_1/1
// var ddd = logg.detail('session1', 'cmd', 'identity');
// ddd.addInput( 'node', 'cmd', 'type', 'rawData', 'data' );
// ddd.addOutput( 'node', 'cmd', 'type', 'rawData', 'data');
// ddd.end();