Skip to content

log contextual info in your nodejs apps, similar to Java's Mapped Diagnostic Context

Notifications You must be signed in to change notification settings

ysnglt/context-tracer

Repository files navigation

context-tracer : log context info, for your node apps

Greenkeeper badge

Propagates a unique context ID throughout calls. Similar to Java MDC and the likes.

For node 6+.

Usage

Returns a callback, augmented with a unique context UUID. Within this callback, all operations (and their childs) will inherit the unique ID.

tracer.set(() => {
  // all nested calls have now access to a unique context ID
  console.log(tracer.get()); // you can now log it
});

Example

The following code :

const tracer = require("context-tracer");

function callThings() {
  nested();
}

function nested() {
  console.log("nested call - stack n°", tracer.get());
}

tracer.set(() => {
  console.log("first call - stack n°", tracer.get());

  // called within the tracer, and inherits the ID
  callThings();
});

Will print :

> first call : stack n°AAAA
> nested call : stack n°AAAA

Installation

> npm install context-tracer

API

tracer.set(callback)

  • Creates a unique context ID
  • provides a context-augmented callback :
    • all calls within the callback will have the same context ID
    • you only need to call the first function in the callback to propagate the context to its childs
tracer.set(() => {
  // all operations called within the tracer will inherit a unique context ID
});

You can nest context augments : the new context ID will override the previous one, only for its callback operations.

tracer.get() ⇒ string

  • Retrieves current context ID
  • Returns a "no context" string if set hasn't been called
console.log("stack n°" + tracer.get());

> stack n°AAAA

⚠️ Node 6-7 users

While this package supports node 6-7, the underlying architecture is considered experimental for these versions. Read more here.

Local installation

This project is made using Typescript. To generate the transpiled javascript package, you need to run gulp :

$ gulp

You can run the full test suite with mocha :

$ npm i && npm run test

About

log contextual info in your nodejs apps, similar to Java's Mapped Diagnostic Context

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published