@dcxp/root
Version:
DCX: Decentralized Credential Exchange. DWN protocol for verifiable credential exchange.
72 lines (60 loc) • 2.01 kB
text/typescript
/* eslint-disable no-undef */
import chalk from 'chalk';
enum Env {
Development = 'development',
Production = 'production',
Test = 'test',
}
enum LogLevel {
Debug = 'debug',
Error = 'error',
Info = 'info',
Log = 'log',
Warn = 'warn',
Test = 'test',
}
/**
*
* A simple console logger with colorized output.
*/
type Level = 'debug' | 'error' | 'info' | 'log' | 'warn' | 'test';
export class Logger implements Partial<Console> {
public static env: Env = process.env.NODE_ENV as Env;
public static isTest: boolean = Logger.env === Env.Test;
public static isDevelopment: boolean = Logger.env === Env.Development;
public static isProduction: boolean = Logger.env === Env.Production;
public static level: Level = Logger.isTest ? 'test' : Logger.isDevelopment ? 'debug' : 'info';
public static debug(message?: unknown, ...args: unknown[]): void {
console.debug(chalk.green('debug') + ':', message, ...args);
}
public static error(message?: unknown, ...args: unknown[]): void {
console.error(chalk.red('error') + ':', message, ...args);
}
public static info(message?: unknown, ...args: unknown[]): void {
console.info(chalk.blue('info') + ':', message, ...args);
}
public static warn(message?: unknown, ...args: unknown[]): void {
console.warn(chalk.yellow('warn') + ':', message, ...args);
}
public static security(message?: unknown, ...args: unknown[]): void {
console.warn(chalk.red('security') + ':', message, ...args);
}
public static log(message?: unknown, ...args: unknown[]): void {
switch (Logger.level) {
case LogLevel.Debug:
Logger.debug(message, ...args);
break;
case LogLevel.Error:
Logger.error(message, ...args);
break;
case LogLevel.Info:
Logger.info(message, ...args);
break;
case LogLevel.Warn:
Logger.warn(message, ...args);
break;
default:
console.log(chalk.gray('log') + ':', message, ...args);
}
}
}