test / src /utils /logger.ts
bipulsardar's picture
23
1d7d958
Raw History Blame Contribute Delete
1.28 kB
export enum LogLevel {
DEBUG = 0,
INFO = 1,
WARN = 2,
ERROR = 3,
}
class Logger {
private level: LogLevel = LogLevel.INFO;
public setLevel(level: LogLevel): void {
this.level = level;
}
private formatMessage(level: string, message: string, meta?: any): string {
const timestamp = new Date().toISOString();
const metaStr = meta ? ` | ${JSON.stringify(meta)}` : '';
return `[${timestamp}] [${level}] ${message}${metaStr}`;
}
public debug(message: string, meta?: any): void {
if (this.level <= LogLevel.DEBUG) {
console.debug(this.formatMessage('DEBUG', message, meta));
}
}
public info(message: string, meta?: any): void {
if (this.level <= LogLevel.INFO) {
console.log(this.formatMessage('INFO', message, meta));
}
}
public warn(message: string, meta?: any): void {
if (this.level <= LogLevel.WARN) {
console.warn(this.formatMessage('WARN', message, meta));
}
}
public error(message: string, error?: any): void {
if (this.level <= LogLevel.ERROR) {
const meta = error instanceof Error ? { name: error.name, message: error.message, stack: error.stack } : error;
console.error(this.formatMessage('ERROR', message, meta));
}
}
}
export const logger = new Logger();