UNPKG

@cardql/node

Version:

CardQL SDK for Node.js and serverless applications

81 lines (64 loc) 1.8 kB
export type LogLevel = "error" | "warn" | "info" | "debug"; export interface LogEntry { level: LogLevel; message: string; timestamp: string; metadata?: any; } export class Logger { private enabled: boolean; private level: LogLevel; constructor(enabled = false, level: LogLevel = "info") { this.enabled = enabled; this.level = level; } private shouldLog(level: LogLevel): boolean { if (!this.enabled) return false; const levels: Record<LogLevel, number> = { error: 0, warn: 1, info: 2, debug: 3, }; return levels[level] <= levels[this.level]; } private formatMessage( level: LogLevel, message: string, metadata?: any ): string { const timestamp = new Date().toISOString(); const prefix = `[${timestamp}] [${level.toUpperCase()}] [CardQL]`; if (metadata) { return `${prefix} ${message} ${JSON.stringify(metadata)}`; } return `${prefix} ${message}`; } error(message: string, metadata?: any): void { if (this.shouldLog("error")) { console.error(this.formatMessage("error", message, metadata)); } } warn(message: string, metadata?: any): void { if (this.shouldLog("warn")) { console.warn(this.formatMessage("warn", message, metadata)); } } info(message: string, metadata?: any): void { if (this.shouldLog("info")) { console.info(this.formatMessage("info", message, metadata)); } } debug(message: string, metadata?: any): void { if (this.shouldLog("debug")) { console.debug(this.formatMessage("debug", message, metadata)); } } setEnabled(enabled: boolean): void { this.enabled = enabled; } setLevel(level: LogLevel): void { this.level = level; } } export const defaultLogger = new Logger();