Initial Commit ...
This commit is contained in:
@@ -0,0 +1,362 @@
|
||||
|
||||
/**
|
||||
* 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
|
||||
Reference in New Issue
Block a user