0.1.0 • Published 7 years ago

async-log v0.1.0

Weekly downloads
2
License
Unlicense
Repository
github
Last release
7 years ago

async-log

Utility and sample code for logging async operations in the context of a web-server using the async_hooks core api

Requirements

  • node: > 8.1.0

Use the helper

(you can view the demo.js file for all the details)

  • add it as a dependency

    yarn add async-log,

  • include it in your main entry point

    const asyncLog = require('async-log');

  • create a transaction every time your server handles a request

    const trans = asyncLog.newTransaction({
     url: req.url,
    });
  • end the transaction every time your server finished handling the request

    trans.end();
  • in between these two calls, every time you want to track fetching a remote resource you need to create a new trace before, then end the created trace after

    const trace = asyncLog.newTrace({ type: 'db' });
    //...
    trace.end();

Use the demo

  • clone this repo and change directory to it's folder
  • start the server in one tab

    node demo.js
  • make request to the server in another tab

    curl http://localhost:3131/ & curl http://localhost:3131/yoyo & wait
  • in the initial tab, you will see how much each request took, and out of that how much it waited for async resources (file access, network requests, etc.)

Caveats

  • the async wait measurements also include some overhead. So it's not 100% accurate. I consider it close enough for my needs.

Acknowledgements

This is inspired by this talk from Thomas Watson and his example code