UNPKG

node-logthis

Version:

A lightweight-logger built for Node.js

83 lines (72 loc) 3.04 kB
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;