mirror of
https://github.com/k1tbyte/Wand-Enhancer.git
synced 2026-09-02 13:00:36 +00:00
47 lines
1.3 KiB
JavaScript
Vendored
47 lines
1.3 KiB
JavaScript
Vendored
import { LOG_FILE_NAME, LOG_PREFIX } from './constants.js';
|
|
import { getRequire } from './runtime.js';
|
|
|
|
// Logging runs inside Wand's own process; a failure here must never take the app down.
|
|
export function createLogger(WandEnhancer) {
|
|
let filePath = null;
|
|
|
|
try {
|
|
const require = getRequire();
|
|
const os = require?.('node:os');
|
|
const path = require?.('node:path');
|
|
if (os && path) {
|
|
filePath = path.join(os.tmpdir(), LOG_FILE_NAME);
|
|
globalThis.__wandInstalledAppsSyncLogFile = filePath;
|
|
}
|
|
} catch {}
|
|
|
|
return function log(level, message, detail) {
|
|
const method = level === 'error' ? 'error' : level === 'warn' ? 'warn' : 'info';
|
|
const line = `[${new Date().toISOString()}] [${level}] ${message}${detail ? ` :: ${detail}` : ''}`;
|
|
|
|
try {
|
|
console[method](LOG_PREFIX, message, detail || '');
|
|
} catch {}
|
|
|
|
try {
|
|
if (WandEnhancer?.log) {
|
|
WandEnhancer.log(`${LOG_PREFIX} ${message}`, detail || '');
|
|
}
|
|
} catch {}
|
|
|
|
writeFile(filePath, line);
|
|
};
|
|
}
|
|
|
|
function writeFile(filePath, line) {
|
|
if (!filePath) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const require = getRequire();
|
|
const fs = require?.('node:fs');
|
|
fs?.appendFileSync(filePath, `${line}\n`);
|
|
} catch {}
|
|
}
|