@bufferapp/logger

1.0.3 • Public • Published

@bufferapp/logger

NPM Version Build Status

Provides standard middleware and functions for logging to stdout. In our production cluster these logs will be indexed in our application-logs Elasticsearch cluster as well as get backed up in s3.

Install

npm install @bufferapp/logger -SE

Usage

To log something, use the logger's info method which takes 2 arguments, an object for structured logging and a string for a message:

logger.info(<Object>, <String>);

To use as a normal logger, require and create the logger:

const logger = require('@bufferapp/logger')({ name: 'Some-Worker' });

function run(data) {
  // log something one-off...
  logger.info({
    metadata: {
      service: data.service,
    },
    stats: {
      processingTime: data.time,
      count: data.count,
    }
  }, `Successfully processed ${data.count} items`);
}

Middleware

const logMiddleware = require('@bufferapp/logger/middleware');

app = express();
app.use(logMiddleware({ name: 'My-App' }));
// ...other middleware and route handlers

Metadata

Add application metadata to your logs using the getMetadata option.

app.use(logMiddleware({
  getMetadata: (req) => {
    return {
      userId: req.session.userId,
      profileId: req.query.profileId,
    };
  },
}));

Stats

Add application stats to your logs. You receive the request object and the response time in milliseconds. For example, you can add tracking metrics to a req.trackingData attribute and then handle them in your getStats method:

app.use(logMiddleware({
  name: 'My-App',
  getStats: (req, responseTime) => {
    return {
      responseTime,
      processingTime: responseTime - req.trackingData.externalRequestTime,
      imagesScanned: req.trackingData.imagesScanned,
    };
  },
}));
// In your request handler
app.get('/get-images', (req, res) => {
  req.trackingData = {};
  getImages(req.url, (images) => {
    req.trackingData.imagesScanned = images.length;
    res.json(images);
  });
});

Params

Add logging of specific query string params using the getMetadata option.

app.use(logMiddleware({
  params: ['profile_id', 'utm_campaign'],
}));

/@bufferapp/logger/

    Package Sidebar

    Install

    npm i @bufferapp/logger

    Weekly Downloads

    70

    Version

    1.0.3

    License

    MIT

    Unpacked Size

    8.74 kB

    Total Files

    7

    Last publish

    Collaborators

    • davidluhr
    • egomezd
    • jacobchadwell
    • philippemiguet
    • josemdev
    • msanroman
    • daisymarie128
    • hamstu
    • stevenc81
    • bufferbot
    • mayauribe
    • esclapes
    • ay8s
    • mickmahady
    • dinostheo
    • hitherejoe
    • dace
    • erickhun
    • kmbriseno
    • kiriappeee
    • cmunozgar
    • peteremilbuffer
    • arekpn
    • abeeb
    • buffermw