Files
moxytool/ts/moxytool.logging.ts

70 lines
1.4 KiB
TypeScript

import * as plugins from './moxytool.plugins.ts';
// ANSI color codes
const colors = {
reset: '\x1b[0m',
bright: '\x1b[1m',
dim: '\x1b[2m',
red: '\x1b[31m',
green: '\x1b[32m',
yellow: '\x1b[33m',
blue: '\x1b[34m',
magenta: '\x1b[35m',
cyan: '\x1b[36m',
white: '\x1b[37m',
};
/**
* A simple logger class for MOXYTOOL
*/
class Logger {
private static instance: Logger;
public static getInstance(): Logger {
if (!Logger.instance) {
Logger.instance = new Logger();
}
return Logger.instance;
}
public log(level: string, message: string): void {
switch (level) {
case 'error':
console.error(`${colors.red}${message}${colors.reset}`);
break;
case 'warn':
console.warn(`${colors.yellow}${message}${colors.reset}`);
break;
case 'ok':
case 'success':
console.log(`${colors.green}${message}${colors.reset}`);
break;
case 'info':
default:
console.log(message);
break;
}
}
public error(message: string): void {
this.log('error', message);
}
public warn(message: string): void {
this.log('warn', message);
}
public info(message: string): void {
this.log('info', message);
}
public success(message: string): void {
this.log('success', message);
}
}
/**
* Logger instance for MOXYTOOL
*/
export const logger = Logger.getInstance();