rainbow-cli
Version:
Rainbow CLI application based on the Rainbow SDK for Node.js
100 lines (81 loc) • 2.54 kB
JavaScript
const Winston = require('winston');
const fs = require("fs");
const util = require("util");
const stripAnsi = require('strip-ansi');
const tsFormat = () => {
let date = new Date();
return date.toLocaleDateString() + " " + date.toLocaleTimeString() + " [" + date.valueOf() + "]";
};
const myFormat = Winston.format.printf(info => {
return `${tsFormat()}` + ' - ' + stripAnsi(info.level) + ':' + stripAnsi(info.message);
});
const argumentsToString = (v)=>{
// convert arguments object to real array
var args = Array.prototype.slice.call(v, 1);
for(var k in args){
if (typeof args[k] === "object"){
//args[k] = util.inspect(args[k], false, null, true);
args[k] = util.inspect(args[k], { showHidden: false, depth: 5, colors: false, customInspect: false });
}
}
var str = args.join(" ");
return str;
}
const logLevel = "debug";
let winston = null;
class Logger {
constructor(config) {
let logFormat = myFormat;
this._logger = {};
this._logger.info = () => {
winston.log("info", argumentsToString(arguments));
};
this._logger.error = () => {
winston.log("error", argumentsToString(arguments));
};
this._logger.warn = () => {
winston.log("warn", argumentsToString(arguments));
};
this._logger.debug = function(level) {
winston.log(level, argumentsToString(arguments));
};
winston = Winston.createLogger({
format: Winston.format.combine(
Winston.format.simple(),
Winston.format.timestamp(),
logFormat
),
transports: [
new (Winston.transports.Console)({
level: logLevel
})
]
});
if (this._logger) {
this._logger.colors = this.colors ;
}
this._isActive = false;
}
set isActive(isActivated) {
this._isActive = isActivated;
}
get isActive() {
return this._isActive;
}
logs(message, value) {
try {
if(this._isActive) {
this._logger.debug(logLevel, message, value);
}
}
catch(err) {
console.error("CLI Parsing issue>>>", err);
}
}
error(message, value) {
if(this._isActive) {
this._logger.error("error", message, value);
}
}
}
module.exports = new Logger();