UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

51 lines 1.69 kB
/** * 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