Files
Papo/src/utils/logger.ts

26 lines
813 B
TypeScript

type LogLevel = 'INFO' | 'WARN' | 'ERROR';
type LogSink = (entry: { level: LogLevel; message: string; timestamp: number }) => void;
let sink: LogSink | null = null;
export const logger = {
info: (msg: string) => {
const entry = { level: 'INFO' as LogLevel, message: msg, timestamp: Date.now() };
if (sink) sink(entry);
console.log(`[INFO] ${msg}`);
},
warn: (msg: string) => {
const entry = { level: 'WARN' as LogLevel, message: msg, timestamp: Date.now() };
if (sink) sink(entry);
console.warn(`[WARN] ${msg}`);
},
error: (msg: string, err?: unknown) => {
const entry = { level: 'ERROR' as LogLevel, message: msg, timestamp: Date.now() };
if (sink) sink(entry);
console.error(`[ERROR] ${msg}`, err);
},
setSink: (fn: LogSink | null) => {
sink = fn;
}
};