19 lines
750 B
TypeScript
19 lines
750 B
TypeScript
type Level = 'debug' | 'info' | 'warn' | 'error';
|
|
|
|
function emit(level: Level, msg: string, meta?: Record<string, unknown>): void {
|
|
const line = {
|
|
ts: new Date().toISOString(),
|
|
level,
|
|
msg,
|
|
...(meta ?? {}),
|
|
};
|
|
const stream = level === 'error' || level === 'warn' ? process.stderr : process.stdout;
|
|
stream.write(`${JSON.stringify(line)}\n`);
|
|
}
|
|
|
|
export const logger = {
|
|
debug: (msg: string, meta?: Record<string, unknown>): void => emit('debug', msg, meta),
|
|
info: (msg: string, meta?: Record<string, unknown>): void => emit('info', msg, meta),
|
|
warn: (msg: string, meta?: Record<string, unknown>): void => emit('warn', msg, meta),
|
|
error: (msg: string, meta?: Record<string, unknown>): void => emit('error', msg, meta),
|
|
};
|