@beignet/core
Version:
Core framework primitives for Beignet
51 lines • 1.69 kB
JavaScript
/**
* Create a logger that discards every log call.
*
* Use this in tests where logging is irrelevant.
*
* @returns A logger port whose methods are no-ops.
*/
export function createNoopLogger() {
const logger = {
trace: () => { },
debug: () => { },
info: () => { },
warn: () => { },
error: () => { },
fatal: () => { },
child: () => logger,
};
return logger;
}
/**
* Create a logger that captures entries in memory.
*
* Child loggers inherit existing bindings and append new bindings to each
* captured entry.
*
* @param bindings - Structured bindings attached to every captured entry.
* @param entries - Optional shared entry array.
* @returns A logger port with an inspectable `entries` array.
*/
export function createMemoryLogger(bindings = {}, entries = []) {
const capturedBindings = { ...bindings };
const record = (level, message, meta) => {
entries.push({
level,
message,
meta: meta ? { ...meta } : undefined,
bindings: { ...capturedBindings },
});
};
return {
entries,
trace: (message, meta) => record("trace", message, meta),
debug: (message, meta) => record("debug", message, meta),
info: (message, meta) => record("info", message, meta),
warn: (message, meta) => record("warn", message, meta),
error: (message, meta) => record("error", message, meta),
fatal: (message, meta) => record("fatal", message, meta),
child: (childBindings) => createMemoryLogger({ ...capturedBindings, ...childBindings }, entries),
};
}
//# sourceMappingURL=logger.js.map