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]