nano-wallet-js-test-1
Version:
SDK for developers to create and interact with Nanocurrency wallet easily
50 lines (43 loc) • 1.39 kB
text/typescript
type LoggerLevel = 'info' | 'error';
export default class Logger {
private name: string;
private debug: boolean | undefined;
constructor(name: string, debug?: boolean) {
this.name = name;
this.debug = debug;
}
private formatedDateTime() {
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hours = `0${date.getHours()}`.slice(-2);
const minutes = `0${date.getMinutes()}`.slice(-2);
const seconds = `0${date.getSeconds()}`.slice(-2);
const milliseconds = `00${date.getMilliseconds()}`.slice(-3);
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;
}
private formatMessage(data: any[], level: LoggerLevel): string {
// Adding ANSI escape codes to display the error message in red
const coloredLevel =
level === 'error'
? `\x1b[31m${level.toUpperCase()}\x1b[0m`
: `\x1b[32m${level.toUpperCase()}\x1b[0m`;
let prefix = `${this.formatedDateTime()} | ${coloredLevel}`;
if (this.name) {
prefix += ` | \u001b[1m${this.name}\u001b[0m`;
}
return `${prefix} | ${data.join(' ')}`;
}
info(...data: any[]) {
if (this.debug) {
console.log(this.formatMessage(data, 'info'));
}
}
error(...data: any[]) {
if (this.debug) {
const errorMessage = this.formatMessage(data, 'error');
console.log(`${errorMessage}`);
}
}
}