A Bunyan stream to send events to Seq. Tested with Node.js versions 4.2.2 and up.
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 ofhttp://localhost:5341
will be usedapiKey
- your Seq API key, if one is required; the default does not send an API keylogOtherAs
- 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
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.
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)
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.