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
| Parameter | Type | Description |
|---|---|---|
logger | ProxyLogger | Receiver of the log records. |
name | string | Identifier of the wrapped object, included in every record. |
scope | string | Higher-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]