export interface LogEventRecord {
level?: string;
[key: string]: unknown;
}
export interface LogErrorContext {
[key: string]: unknown;
}
export function logEvent(event: LogEventRecord): void {
const record = {
ts: new Date().toISOString(),
level: event.level ?? 'info',
...event,
};
process.stderr.write(`${JSON.stringify(record)}\n`);
}
export function logError(error: unknown, context: LogErrorContext = {}): void {
const err = error instanceof Error ? error : new Error(String(error));
const record = {
ts: new Date().toISOString(),
level: 'error',
name: err.name ?? 'Error',
message: err.message ?? String(error),
stack: err.stack,
...context,
};
process.stderr.write(`${JSON.stringify(record)}\n`);
}