187 lines
3.4 KiB
JavaScript
187 lines
3.4 KiB
JavaScript
|
|
const baseLogTag = 'XFrameworkElectronApp';
|
|
let enableLogging = true;
|
|
|
|
/**
|
|
* Log Tags ...
|
|
*/
|
|
const XLogTag = {
|
|
Debug: 'debug',
|
|
Info: 'info',
|
|
Warn: 'warn',
|
|
Error: 'error'
|
|
};
|
|
|
|
/**
|
|
* 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();
|
|
|
|
//
|
|
console.debug(`${baseLogTag}:${message.tag} => ${message.message}`, ...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();
|
|
|
|
//
|
|
console.info(`${baseLogTag}:${message.tag} => ${message.message}`, ...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();
|
|
|
|
//
|
|
console.warn(`${baseLogTag}:${message.tag} => ${message.message}`, ...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();
|
|
|
|
//
|
|
console.error(`${baseLogTag}:${message.tag} => ${message.message}`, ...message.args);
|
|
}
|
|
|
|
//
|
|
// Module Eports ...
|
|
module.exports = {
|
|
//
|
|
enableLogging: () => {
|
|
enableLogging = true;
|
|
},
|
|
disableLogging: () => {
|
|
enableLogging = false;
|
|
},
|
|
isLoggingEnable: () => {
|
|
return enableLogging;
|
|
},
|
|
//
|
|
XLogTag: XLogTag,
|
|
XLogMessage: XLogMessage,
|
|
log: log,
|
|
logDebug: logDebug,
|
|
logInfo: logInfo,
|
|
logWarn: logWarn,
|
|
logError: logError,
|
|
} |