ctxobj
Version:
Objects with context, especially good for contextual logging
75 lines (51 loc) • 1.48 kB
Markdown
[](http://travis-ci.org/anodejs/node-ctxobj)
Adds context to objects. Good for contextual logging.
Decorates `obj` with a context. `pushctx` or `popctx` will extende context.
```nodejs
var ctxobj = require('ctxobj');
// just an object
var obj0 = { x: 1, y: { val: 2 } };
// decorate with context
var obj1 = ctxobj.new(obj0);
// push and pop data to the context
obj1.pushctx('c1')
obj1.pushctx('c2a').pushctx('c2b')
obj1.popctx().popctx();
// enumarate contexts
obj1.forEachCtx(function(c) {
console.log(c);
});
```
Output:
```
c1
```
Decorates console-like objects with a context that is prepended to each `console.xxx()` call.
```node.js
var ctxobj = require('ctxobj');
var log0 = ctxobj.console(console);
log0.info('no context yet');
var i = 0;
var log1 = log0.pushctx('c1').pushctx(function() { return i++; });
log1.warn('now with a two items in the context');
log1.info('yo yo yo');
var log2 = log1.popctx();
log2.error('only one item in the context now');
```
Output:
```
no context yet
[][0] now with a two items in the context
[][1] yo yo yo
[] only one item in the context now
```
Some sugar:
Pushes a timestamp function to the context
Pushes file name and line number of log line to the context (skipping `skip` frames).
## Licence ##
MIT