Skip to main content

createLogProxyHandler

function createLogProxyHandler<T>(
logger,
name,
scope): ProxyHandler<T>;

Build a ProxyHandler that logs every interaction with the target: property reads/writes/deletes, descriptor and prototype access, in checks, key enumeration, extensibility changes, and direct calls. Function properties accessed via get are themselves wrapped so each method call is logged with its arguments.

Non-mutating operations (reads, descriptor lookups, calls) log at debug; mutating operations (writes, deletes, defineProperty, setPrototypeOf, preventExtensions) log at info.

Type Parameters​

Type Parameter
T extends object

Parameters​

ParameterTypeDescription
loggerProxyLoggerReceiver of the log records.
namestringIdentifier of the wrapped object, included in every record.
scopestringHigher-level grouping (e.g. module name), included in every record.

Returns​

ProxyHandler<T>

Example​

const handler = createLogProxyHandler(logger, 'cache', 'storage');
const observed = new Proxy({get(key: string) { ... }}, handler);
observed.get('foo'); // logs: called get cache[get], then called cache.get(...)
'foo' in observed; // logs: called has cache[foo]
delete observed.foo; // logs: called delete cache[foo]