Files
openclaw/extensions/tlon/src/logger-runtime.ts
2026-04-06 03:01:43 +01:00

38 lines
1004 B
TypeScript

import { format } from "node:util";
type RuntimeLoggerLike = {
info: (message: string) => void;
error: (message: string) => void;
};
type LoggerBackedRuntime = {
log: (...args: unknown[]) => void;
error: (...args: unknown[]) => void;
writeStdout: (value: string) => void;
writeJson: (value: unknown, space?: number) => void;
exit: (code: number) => never;
};
export function createLoggerBackedRuntime(params: {
logger: RuntimeLoggerLike;
exitError?: (code: number) => Error;
}): LoggerBackedRuntime {
return {
log: (...args) => {
params.logger.info(format(...args));
},
error: (...args) => {
params.logger.error(format(...args));
},
writeStdout: (value) => {
params.logger.info(value);
},
writeJson: (value, space = 2) => {
params.logger.info(JSON.stringify(value, null, space > 0 ? space : undefined));
},
exit: (code: number): never => {
throw params.exitError?.(code) ?? new Error(`exit ${code}`);
},
};
}