ctxobj
Adds context to objects. Good for contextual logging.
ctxobj.new(obj)
Decorates obj
with a context. pushctx
or popctx
will extende context.
var ctxobj = require('ctxobj'); // just an objectvar obj0 = { x: 1, y: { val: 2 } }; // decorate with contextvar obj1 = ctxobj.new(obj0); // push and pop data to the contextobj1.pushctx('c1')obj1.pushctx('c2a').pushctx('c2b')obj1.popctx().popctx(); // enumarate contextsobj1.forEachCtx(function(c) { console.log(c);});
Output:
c1
ctxobj.console(console)
Decorates console-like objects with a context that is prepended to each console.xxx()
call.
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
[c1][0] now with a two items in the context
[c1][1] yo yo yo
[c1] only one item in the context now
Some sugar:
ctxobj.timestamp()
Pushes a timestamp function to the context
ctxobj.stacktop(skip)
Pushes file name and line number of log line to the context (skipping skip
frames).
Licence
MIT