UNPKG

summer-mvc

Version:

Structured, Light, Spring-like Web Application Development Framework

259 lines (197 loc) 7.42 kB
module.exports.initLogger = initLogger; module.exports.log = log; module.exports.info = info; module.exports.debug = debug; module.exports.error = error; var fs = require( "fs" ); var path = require( "path" ); var util = require( "util" ); var loggerInfo = require( __loggerInfo ); var colorInfo = require( __colorInfo ); // Initializing Logger - Start function initLogger(){ let destination = createLogFile(); global.logFileWriteStream = createStream( destination ); } function createLogFile(){ let filePath = loggerInfo.file.path == "__defaultLogFilePath" ? __defaultLogFilePath : loggerInfo.file.path; let fileNamePrefix = loggerInfo.file.fileNamePrefix; let fileName = getLogFileName( fileNamePrefix ); var common = require( __common ); common.makeHierarchy( filePath, "/" ); let destination = path.join(filePath, fileName); try{ fs.openSync( destination, "a" ); return destination; } catch( err ){ throw err; } } function getLogFileName( fileName ){ let date = ( ( new Date() ).toISOString() ).substring( 0, 10 ); fileName = fileName + "_" + date + ".log"; return fileName; } function createStream( destination ){ return fs.createWriteStream( destination, {flags: "a", "encoding" : "utf8", "mode" : 0666} ); } // Initializing Logger - End // Write Log - Start function log( type, message ){ var curTime = new Date(); curTime = curTime.toISOString(); var functionName = getFunctionName( arguments.callee.caller.toString() ); logFileWriteStream.write( "[" + type + "] - [" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "\n" ); console.log( "[" + type + "] - [" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "" ); } function info(){ var curTime = new Date(); curTime = curTime.toISOString(); var message = ""; for( var i=0; i<arguments.length; i++ ){ if( getMessageType(arguments[i]) == "object" ){ try{ if( JSON.stringify( arguments[i], null, 4 ) === "{}" ){ message += require("util").inspect(arguments[i], {showHidden: false, depth: null} ); } else { message += JSON.stringify( arguments[i], null, 4 ) + " "; } } catch( err ){ var argv = arguments[i]; argv = util.inspect( arguments[i], {showHidden: false, depth: null} ); message += argv + " "; } } else{ message += arguments[i] + " "; } } var functionName = ( getFunctionName( arguments.callee.caller.toString() ) ).trim(); if( loggerInfo.writeFile.INFO ){ logFileWriteStream.write( "[INFO] - [" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "\n" ); } if( loggerInfo.console.INFO ){ console.log( attachColorPrefix(colorInfo.FgYellow) + "%s" + attachColorPrefix(colorInfo.Reset), "[INFO]", "[" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "", "" ); } } function debug(){ var curTime = new Date(); curTime = curTime.toISOString(); var message = ""; for( var i=0; i<arguments.length; i++ ){ if( getMessageType(arguments[i]) == "object" ){ try{ if( JSON.stringify( arguments[i], null, 4 ) === "{}" ){ message += require("util").inspect(arguments[i], {showHidden: false, depth: null} ); } else { message += JSON.stringify( arguments[i], null, 4 ) + " "; } } catch( err ){ var argv = arguments[i]; argv = util.inspect( arguments[i], {showHidden: false, depth: null} ); message += argv + " "; } } else{ message += arguments[i] + " "; } } var functionName = getFunctionName( arguments.callee.caller.toString() ); if( loggerInfo.writeFile.INFO ){ logFileWriteStream.write( "[DEBUG] - [" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "\n" ); } if( loggerInfo.console.INFO ){ console.log( attachColorPrefix(colorInfo.FgCyan) + "%s" + attachColorPrefix(colorInfo.Reset), "[DEBUG]", "[" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "" ); } } function error(){ var curTime = new Date(); curTime = curTime.toISOString(); var functionName = getFunctionName( arguments.callee.caller.toString() ); var message = ""; for( var i=0; i<arguments.length; i++ ){ if( arguments[i] instanceof Error ){ message += arguments[i].message + "\n" + arguments[i].stack; } else{ if( getMessageType(arguments[i]) == "object" ){ try{ if( JSON.stringify( arguments[i], null, 4 ) === "{}" ){ message += require("util").inspect(arguments[i], {showHidden: false, depth: null} ); } else { message += JSON.stringify( arguments[i], null, 4 ) + " "; } } catch( err ){ var argv = arguments[i]; argv = util.inspect( arguments[i], {showHidden: false, depth: null} ); message += argv + " "; } } else{ var tempMessage = arguments[i]; var tempMessageArray = tempMessage.split("\n"); message += tempMessageArray[0] + "\n"; message += tempMessageArray[1] + "\n"; for( var j=2; j<tempMessageArray.length; j++ ){ var line = tempMessageArray[j]; var lineArray = line.split(","); for( var k=0; k<lineArray.length; k++ ){ message += " " + lineArray[k] + "\n"; } } } } } if( loggerInfo.writeFile.ERROR ){ logFileWriteStream.write( "[ERROR] - [" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "\n" ); } if( loggerInfo.console.ERROR ){ console.log( attachColorPrefix(colorInfo.FgRed) + "%s" + attachColorPrefix(colorInfo.Reset), "[ERROR]", "[" + __callerFileName + " : " + __line + " | " + functionName + " - " + curTime + "] " + message + "" ); } } // Write Log - End // Helper Functions - Start function getFunctionName( func ){ func = func.substr('function '.length); func = func.substr(0, func.indexOf('(')); if( func == "" ) func = "ANONYMOUS_FUNC"; if( func.indexOf( "=>" ) >= 0 ) func = "ANONYMOUS_FUNC"; return func; } function getMessageType( message ){ return typeof message; } function attachColorPrefix( colorValue ){ return "\x1b" + colorValue; } Object.defineProperty(global, '__callerFileName', { get: function(){ try { var err = new Error(); var callerfile; var currentfile; Error.prepareStackTrace = function (err, stack) { return stack; }; currentfile = err.stack.shift().getFileName(); while (err.stack.length) { callerfile = err.stack.shift().getFileName(); if(currentfile !== callerfile){ return callerfile.replace( path.dirname(require.main.filename), "" ); } } } catch (err) {} return undefined; } }); Object.defineProperty(global, '__stack', { get: function(){ var orig = Error.prepareStackTrace; Error.prepareStackTrace = function(_, stack){ return stack; }; var err = new Error; Error.captureStackTrace(err, arguments.callee.caller); var stack = err.stack; Error.prepareStackTrace = orig; return stack; } }); Object.defineProperty(global, '__line', { get: function(){ return __stack[1].getLineNumber(); } }); // Helper Functions - End