refactor(logging): share node createRequire resolution

This commit is contained in:
Peter Steinberger
2026-02-21 22:49:07 +00:00
parent b25fd03b8c
commit b791ac2167
4 changed files with 28 additions and 66 deletions

View File

@@ -6,6 +6,7 @@ import { resolvePreferredOpenClawTmpDir } from "../infra/tmp-openclaw-dir.js";
import { readLoggingConfig } from "./config.js";
import type { ConsoleStyle } from "./console.js";
import { type LogLevel, levelToMinLevel, normalizeLogLevel } from "./levels.js";
import { resolveNodeRequireFromMeta } from "./node-require.js";
import { loggingState } from "./state.js";
export const DEFAULT_LOG_DIR = resolvePreferredOpenClawTmpDir();
@@ -15,28 +16,7 @@ const LOG_PREFIX = "openclaw";
const LOG_SUFFIX = ".log";
const MAX_LOG_AGE_MS = 24 * 60 * 60 * 1000; // 24h
function resolveNodeRequire(): ((id: string) => NodeJS.Require) | null {
const getBuiltinModule = (
process as NodeJS.Process & {
getBuiltinModule?: (id: string) => unknown;
}
).getBuiltinModule;
if (typeof getBuiltinModule !== "function") {
return null;
}
try {
const moduleNamespace = getBuiltinModule("module") as {
createRequire?: (id: string) => NodeJS.Require;
};
return typeof moduleNamespace.createRequire === "function"
? moduleNamespace.createRequire
: null;
} catch {
return null;
}
}
const requireConfig = resolveNodeRequire()?.(import.meta.url) ?? null;
const requireConfig = resolveNodeRequireFromMeta(import.meta.url);
export type LoggerSettings = {
level?: LogLevel;