Skip to content

datalust/bunyan-seq

Repository files navigation

bunyan-seq Build Publish NPM

A Bunyan stream to send events to Seq. Tested with Node.js versions 4.2.2 and up.

Usage

First, install bunyan-seq as a global tool:

npm install -g bunyan-seq

Then, pipe the output of your bunyan-enabled app to it:

node your-app.js | bunyan-seq --serverUrl http://localhost:5341 --apiKey 1234567890  --property application=ExampleApp

bunyan-seq accepts the following parameters:

  • serverUrl - this is the base URL of your Seq server; if omitted, the default value of http://localhost:5341 will be used
  • apiKey - your Seq API key, if one is required; the default does not send an API key
  • logOtherAs - log other output (not formatted through bunyan) to seq at this loglevel. Useful to capture messages if the node process crashes or smilar.
  • property - add additional properties to all logs sent to Seq

Structured logging with message templates

You can specify property names as tokens in the log message to control how the event is rendered in Seq:

// Seq will render this as 'Hi, Alice!'
log.info({ user: 'Alice' }, 'Hi, {user}!');

The full message template syntax is documented here.

Capturing other output

To enable capture of output not formatted through bunyan use the logOtherAs parameter. It's possible to use different settings for STDOUT/STDERR like this, when using bash:

node your-app.js `
    2> >(bunyan-seq --logOtherAs Error --serverUrl http://localhost:5341 --apiKey 1234567890) `
    > >(bunyan-seq --logOtherAs Information --serverUrl http://localhost:5341 --apiKey 1234567890)

In-process usage

Use the createStream() method to create a Bunyan stream configuration, passing serverUrl, apiKey and batching parameters.

let bunyan = require('bunyan');
let seq = require('bunyan-seq');

var log = bunyan.createLogger({
  name: 'myapp',
  streams: [
    {
      stream: process.stdout,
      level: 'warn'
    },
    seq.createStream({
      serverUrl: 'http://localhost:5341',
      level: 'info',
      reemitErrorEvents: true,
      onError: (e) => {
        console.error('[SeqStreamCustomError] failed to log events:', e);
      }
    })
  ]
});

log.info('hi');
log.warn({ lang: 'fr' }, 'au revoir');

Read the complete documentation.