Spaces:
Runtime error
Runtime error
| /** | |
| * Structured logger for the OmniRoute plugin. | |
| * | |
| * Levels: error < warn < info < debug | |
| * Default: warn (matches current console.warn behavior) | |
| * Set via features.logLevel in plugin options. | |
| */ | |
| export type LogLevel = "error" | "warn" | "info" | "debug"; | |
| const LEVEL_ORDER: Record<LogLevel, number> = { | |
| error: 0, | |
| warn: 1, | |
| info: 2, | |
| debug: 3, | |
| }; | |
| const TAG = "[omniroute-plugin]"; | |
| function shouldLog(current: LogLevel, target: LogLevel): boolean { | |
| return LEVEL_ORDER[current] >= LEVEL_ORDER[target]; | |
| } | |
| let _level: LogLevel = "warn"; | |
| export function setLogLevel(level: LogLevel): void { | |
| _level = level; | |
| } | |
| export function getLogLevel(): LogLevel { | |
| return _level; | |
| } | |
| function fmt(level: LogLevel, msg: string, tag?: string): string { | |
| const prefix = tag ? `${TAG}${tag}` : TAG; | |
| return `${prefix} [${level.toUpperCase()}] ${msg}`; | |
| } | |
| export const logger = { | |
| error(msg: string, ...args: unknown[]): void { | |
| if (shouldLog(_level, "error")) console.error(fmt("error", msg), ...args); | |
| }, | |
| warn(msg: string, ...args: unknown[]): void { | |
| if (shouldLog(_level, "warn")) console.warn(fmt("warn", msg), ...args); | |
| }, | |
| info(msg: string, ...args: unknown[]): void { | |
| if (shouldLog(_level, "info")) console.warn(fmt("info", msg), ...args); | |
| }, | |
| debug(msg: string, ...args: unknown[]): void { | |
| if (shouldLog(_level, "debug")) console.warn(fmt("debug", msg), ...args); | |
| }, | |
| /** Always emit regardless of level (for critical init breadcrumbs). */ | |
| always(msg: string, ...args: unknown[]): void { | |
| console.warn(TAG, msg, ...args); | |
| }, | |
| // ββ Tagged child loggers ββββββββββββββββββββββββββββββββββββββββββββββ | |
| child(tag: string) { | |
| return { | |
| error: (msg: string, ...args: unknown[]) => | |
| shouldLog(_level, "error") && | |
| console.error(fmt("error", msg, tag), ...args), | |
| warn: (msg: string, ...args: unknown[]) => | |
| shouldLog(_level, "warn") && | |
| console.warn(fmt("warn", msg, tag), ...args), | |
| info: (msg: string, ...args: unknown[]) => | |
| shouldLog(_level, "info") && | |
| console.warn(fmt("info", msg, tag), ...args), | |
| debug: (msg: string, ...args: unknown[]) => | |
| shouldLog(_level, "debug") && | |
| console.warn(fmt("debug", msg, tag), ...args), | |
| }; | |
| }, | |
| }; | |