node-logthis
Version:
A lightweight-logger built for Node.js
83 lines (72 loc) • 3.04 kB
JavaScript
const styleTable = {
"bold": "\x1b[1m",
"clean": "\x1b[0m",
"underline": "\x1b[4m",
"YELLOW": "\x1b[33m",
"GREEN": "\x1b[32m",
"RED": "\x1b[31m",
"BLUE": "\x1b[34m",
"GRAY": "\x1b[90m",
"check": "✔",
"warning": "★",
"info": "●",
"pointer": "▶",
"error": "✖"
}
//TODO: Add inline compensation for the message portion as an option
generatePadding = (paddingLength) => {
return " ".repeat(paddingLength)
}
generatePreface = (namespace, namespaceColor) => {
return namespaceColor + styleTable.bold + '[' + namespace + ']' + generatePadding(4) + styleTable.pointer + generatePadding(4) + styleTable.clean
}
generateType = (errorType, errorSymbol, errorColor) => {
return errorColor + styleTable.bold + errorSymbol + generatePadding(1) + styleTable.underline + errorType.toUpperCase() + styleTable.clean
}
generateMessage = (message) => {
return styleTable.bold + styleTable.GRAY + message + styleTable.clean
}
class LogThis {
/**
* Constructor for the logger
* @param {string=} namespace The name of the app that will be displayed on the console.
* @param {string=} namespaceColor The preffered color of the app name
*/
constructor(namespace, namespaceColor) {
this._namespace = namespaceColor.length > 0 ? namespace : 'DefaultApp'
this._namespaceColor = styleTable[namespaceColor.toUpperCase()] == undefined ? styleTable.BLUE : styleTable[namespaceColor.toUpperCase()]
}
/**
* General Console Message
* @param {string=} message The message to be displayed on the console
*/
info(message) {
console.log(generatePreface(this._namespace, this._namespaceColor) + generateType('info', styleTable.info, styleTable.BLUE) + generatePadding(4) + generateMessage(message))
}
/**
* Success Console Message
* @param {string=} message The message to be displayed on the console
*/
success(message) {
console.log(generatePreface(this._namespace, this._namespaceColor) + generateType('success', styleTable.check, styleTable.GREEN) + generatePadding(4) + generateMessage(message))
}
/**
* Warning Console Message
* @param {string=} message The message to be displayed on the console
*/
warning(message) {
console.log(generatePreface(this._namespace, this._namespaceColor) + generateType('warning', styleTable.warning, styleTable.YELLOW) + generatePadding(4) + generateMessage(message))
}
/**
* Error Console Message
* @param {string=} message The message to be displayed on the console
* @param {Error=} error Display error stacktrace (Optional)
*/
erorr(message, error) {
console.log(generatePreface(this._namespace, this._namespaceColor) + generateType('error', styleTable.error, styleTable.RED) + generatePadding(4) + generateMessage(message))
if (error) {
console.log(styleTable.GRAY + error.stack + styleTable.clean)
}
}
}
module.exports = LogThis;