export interface Logger { debug: (message: string, meta?: Record) => void; info: (message: string, meta?: Record) => void; warn: (message: string, meta?: Record) => void; error: (message: string, meta?: Record) => void; } function formatMessage( level: "debug" | "info" | "warn" | "error", scope: string, message: string, meta?: Record, ): string { const prefix = `[${scope}]`; if (!meta || Object.keys(meta).length === 0) { return `${prefix} ${message}`; } return `${prefix} ${message} ${JSON.stringify({ level, ...meta })}`; } export function createLogger(scope: string): Logger { return { debug: (message, meta) => { console.debug(formatMessage("debug", scope, message, meta)); }, info: (message, meta) => { console.info(formatMessage("info", scope, message, meta)); }, warn: (message, meta) => { console.warn(formatMessage("warn", scope, message, meta)); }, error: (message, meta) => { console.error(formatMessage("error", scope, message, meta)); }, }; }