362 lines
6.5 KiB
JavaScript
362 lines
6.5 KiB
JavaScript
|
|
/**
|
|
* XLogger Tools Module ...
|
|
* a module which used to handle all Loggings related actions in node js ...
|
|
*
|
|
* Maintainer
|
|
*
|
|
* Hadi Khazaee Asl <https://saherelm.ir> (hadi_khazaee_asl@yahoo.com)
|
|
*/
|
|
|
|
//
|
|
//#region Imports ...
|
|
const XColorTools = require("./x-color.tools");
|
|
const XValueTools = require("./x-value.tools");
|
|
//#endregion
|
|
|
|
//
|
|
//#region Variables/Constants ...
|
|
let baseLogTag = 'xFrameworkCLI';
|
|
let enableLogging = true;
|
|
|
|
/**
|
|
* Log Tags ...
|
|
*/
|
|
const XLogTag = {
|
|
Debug: 'debug',
|
|
Info: 'info',
|
|
Warn: 'warn',
|
|
Error: 'error'
|
|
};
|
|
//#endregion
|
|
|
|
//
|
|
//#region Actions ...
|
|
/**
|
|
* retrieve an instance of XLogMessage ...
|
|
*
|
|
* @param {string} tag tag of logging ...
|
|
* @param {string} message content of log message ...
|
|
* @param {array of any} args args of content which required to logging ...
|
|
* @param {number} timestamp logging time ...
|
|
*
|
|
* @returns an instance of log message object ...
|
|
*/
|
|
function XLogMessage(
|
|
tag,
|
|
message,
|
|
args,
|
|
timestamp
|
|
) {
|
|
//
|
|
if (!tag) {
|
|
throw 'Tag not provided ...';
|
|
}
|
|
|
|
//
|
|
if (!message) {
|
|
throw 'Message not provided ...';
|
|
}
|
|
|
|
//
|
|
if (!args) {
|
|
args = [];
|
|
}
|
|
|
|
//
|
|
if (!timestamp) {
|
|
timestamp = new Date().getTime();
|
|
}
|
|
|
|
//
|
|
return {
|
|
tag,
|
|
message,
|
|
args,
|
|
timestamp,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* log data ...
|
|
*
|
|
* @param {XLogMessage} message
|
|
*/
|
|
function log(message) {
|
|
//
|
|
if (!message || !message.tag || !message.message || !enableLogging) {
|
|
return;
|
|
}
|
|
|
|
//
|
|
message.timestamp = new Date().getTime();
|
|
|
|
//
|
|
switch (message.tag) {
|
|
//
|
|
case XLogTag.Debug:
|
|
logDebug(message);
|
|
break;
|
|
//
|
|
case XLogTag.Info:
|
|
logInfo(message);
|
|
break;
|
|
//
|
|
case XLogTag.Warn:
|
|
logWarn(message);
|
|
break;
|
|
//
|
|
case XLogTag.Error:
|
|
logError(message);
|
|
break;
|
|
|
|
//
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Log Debug ...
|
|
*
|
|
* @param {XLogMessage} message
|
|
*/
|
|
function logDebug(message) {
|
|
//
|
|
if (!message || !message.message || !enableLogging || message.tag !== XLogTag.Debug) {
|
|
return;
|
|
}
|
|
|
|
//
|
|
message.timestamp = new Date().getTime();
|
|
|
|
//
|
|
const cBaseLogTag = XColorTools.colorifyContent(
|
|
baseLogTag,
|
|
XColorTools.COLOR_NAMES.LightGray
|
|
);
|
|
|
|
//
|
|
const cTag = XColorTools.colorifyContent(
|
|
message.tag,
|
|
XColorTools.COLOR_NAMES.Default
|
|
);
|
|
|
|
//
|
|
const cMessage = XColorTools.colorifyContent(
|
|
message.message,
|
|
XColorTools.COLOR_NAMES.LightGray
|
|
);
|
|
|
|
//
|
|
console.debug(`${cBaseLogTag}:${cTag} => ${cMessage}`, ...message.args);
|
|
}
|
|
|
|
/**
|
|
* Log Info ...
|
|
*
|
|
* @param {XLogMessage} message
|
|
*/
|
|
function logInfo(message) {
|
|
//
|
|
if (!message || !message.message || !enableLogging || message.tag !== XLogTag.Info) {
|
|
return;
|
|
}
|
|
|
|
//
|
|
message.timestamp = new Date().getTime();
|
|
|
|
//
|
|
const cBaseLogTag = XColorTools.colorifyContent(
|
|
baseLogTag,
|
|
XColorTools.COLOR_NAMES.LightGray
|
|
);
|
|
|
|
//
|
|
const cTag = XColorTools.colorifyContent(
|
|
message.tag,
|
|
XColorTools.COLOR_NAMES.Default
|
|
);
|
|
|
|
//
|
|
const cMessage = XColorTools.colorifyContent(
|
|
message.message,
|
|
XColorTools.COLOR_NAMES.Blue
|
|
);
|
|
|
|
//
|
|
console.info(`${cBaseLogTag}:${cTag} => ${cMessage}`, ...message.args);
|
|
}
|
|
|
|
/**
|
|
* Log Warn ...
|
|
*
|
|
* @param {XLogMessage} message
|
|
*/
|
|
function logWarn(message) {
|
|
//
|
|
if (!message || !message.message || !enableLogging || message.tag !== XLogTag.Warn) {
|
|
return;
|
|
}
|
|
|
|
//
|
|
message.timestamp = new Date().getTime();
|
|
|
|
//
|
|
const cBaseLogTag = XColorTools.colorifyContent(
|
|
baseLogTag,
|
|
XColorTools.COLOR_NAMES.LightGray
|
|
);
|
|
|
|
//
|
|
const cTag = XColorTools.colorifyContent(
|
|
message.tag,
|
|
XColorTools.COLOR_NAMES.Default
|
|
);
|
|
|
|
//
|
|
const cMessage = XColorTools.colorifyContent(
|
|
message.message,
|
|
XColorTools.COLOR_NAMES.Yellow
|
|
);
|
|
|
|
//
|
|
console.warn(`${cBaseLogTag}:${cTag} => ${cMessage}`, ...message.args);
|
|
}
|
|
|
|
/**
|
|
* Log Error ...
|
|
*
|
|
* @param {XLogMessage} message
|
|
*/
|
|
function logError(message) {
|
|
//
|
|
if (!message || !message.message || !enableLogging || message.tag !== XLogTag.Error) {
|
|
return;
|
|
}
|
|
|
|
//
|
|
message.timestamp = new Date().getTime();
|
|
|
|
//
|
|
const cBaseLogTag = XColorTools.colorifyContent(
|
|
baseLogTag,
|
|
XColorTools.COLOR_NAMES.LightGray
|
|
);
|
|
|
|
//
|
|
const cTag = XColorTools.colorifyContent(
|
|
message.tag,
|
|
XColorTools.COLOR_NAMES.Default
|
|
);
|
|
|
|
//
|
|
const cMessage = XColorTools.colorifyContent(
|
|
message.message,
|
|
XColorTools.COLOR_NAMES.Red
|
|
);
|
|
|
|
//
|
|
console.error(`${cBaseLogTag}:${cTag} => ${cMessage}`, ...message.args);
|
|
}
|
|
|
|
/**
|
|
* issue simple debug log ...
|
|
*
|
|
* @param {string} message log message ...
|
|
*/
|
|
function simpleDebugLog(message = "") {
|
|
//
|
|
const msgObject = XLogMessage(
|
|
XLogTag.Debug,
|
|
message
|
|
);
|
|
|
|
//
|
|
logDebug(msgObject);
|
|
}
|
|
|
|
/**
|
|
* issue simple info log ...
|
|
*
|
|
* @param {string} message log message ...
|
|
*/
|
|
function simpleInfoLog(message = "") {
|
|
//
|
|
const msgObject = XLogMessage(
|
|
XLogTag.Info,
|
|
message
|
|
);
|
|
|
|
//
|
|
logInfo(msgObject);
|
|
}
|
|
|
|
/**
|
|
* issue simple warn log ...
|
|
*
|
|
* @param {string} message log message ...
|
|
*/
|
|
function simpleWarnLog(message = "") {
|
|
//
|
|
const msgObject = XLogMessage(
|
|
XLogTag.Warn,
|
|
message
|
|
);
|
|
|
|
//
|
|
logWarn(msgObject);
|
|
}
|
|
|
|
/**
|
|
* issue simple error log ...
|
|
*
|
|
* @param {string} message log message ...
|
|
*/
|
|
function simpleErrorLog(message = "") {
|
|
//
|
|
const msgObject = XLogMessage(
|
|
XLogTag.Error,
|
|
message
|
|
);
|
|
|
|
//
|
|
logError(msgObject);
|
|
}
|
|
//#endregion
|
|
|
|
//
|
|
//#region Module Eports ...
|
|
module.exports = {
|
|
//
|
|
enableLogging: () => {
|
|
enableLogging = true;
|
|
},
|
|
disableLogging: () => {
|
|
enableLogging = false;
|
|
},
|
|
isLoggingEnable: () => {
|
|
return enableLogging;
|
|
},
|
|
changeBaseLogTag: (value => {
|
|
//
|
|
if (XValueTools.isValidArg(value)) {
|
|
baseLogTag = value;
|
|
}
|
|
}),
|
|
//
|
|
XLogTag: XLogTag,
|
|
//
|
|
XLogMessage: XLogMessage,
|
|
log: log,
|
|
logDebug: logDebug,
|
|
logInfo: logInfo,
|
|
logWarn: logWarn,
|
|
logError: logError,
|
|
//
|
|
simpleDebugLog,
|
|
simpleInfoLog,
|
|
simpleWarnLog,
|
|
simpleErrorLog,
|
|
}
|
|
//#endregion
|