UNPKG

create-sekiban-app

Version:

Create a new Sekiban application with Dapr

58 lines (46 loc) 1.56 kB
import { config } from '../config/index.js'; type LogLevel = 'error' | 'warn' | 'info' | 'debug'; class Logger { private level: LogLevel; constructor(level: LogLevel = 'info') { this.level = level; } private shouldLog(level: LogLevel): boolean { const levels: LogLevel[] = ['error', 'warn', 'info', 'debug']; const currentLevelIndex = levels.indexOf(this.level); const requestedLevelIndex = levels.indexOf(level); return requestedLevelIndex <= currentLevelIndex; } private formatMessage(level: LogLevel, message: string, ...args: any[]): void { if (!this.shouldLog(level)) return; const timestamp = new Date().toISOString(); const prefix = `[${timestamp}] [${level.toUpperCase()}]`; switch (level) { case 'error': console.error(prefix, message, ...args); break; case 'warn': console.warn(prefix, message, ...args); break; case 'info': console.info(prefix, message, ...args); break; case 'debug': console.debug(prefix, message, ...args); break; } } error(message: string, ...args: any[]): void { this.formatMessage('error', message, ...args); } warn(message: string, ...args: any[]): void { this.formatMessage('warn', message, ...args); } info(message: string, ...args: any[]): void { this.formatMessage('info', message, ...args); } debug(message: string, ...args: any[]): void { this.formatMessage('debug', message, ...args); } } export default new Logger(config.LOG_LEVEL);