Bunyan Logger for Restify =========================

Downloads in past


212.0.79 years ago9 years agoMinified + gzip package size for restify-bunyan-logger in KB


Bunyan Logger for Restify
Add bunyan logging to your restify app.


npm install restify-bunyan-logger

Use --save to add the package to your current package.json.


Basic usage is one line (if you're already using bunyan):
var restifyBunyanLogger = require('restify-bunyan-logger');
server.on('after', restifyBunyanLogger());

If you're not using bunyan, you'll need to update your server creation too:
var Logger = require('bunyan');
var server = restify.createServer({
  log: new Logger.createLogger({
    name: "your app name",


restifyBunyanLogger takes an option parameter. Valid keys are:
  • skip: function to skip some logs. Take as parameters req and res, must return true to skip the logging of this request.
  • custom: function to add custom values to the bunyan log. Take as parameters req, res, route, err, log (a pre defined log object). Must return a Javascript object.
  • logger: a custom bunyan logger. Will default to req.log if unspecified

server.on('after', restifyBunyanLogger({
  skip: function(req, res) {
    return req.method === "OPTIONS";
  custom: function(req, res, route, err, log) {
    // This will not work when using gzip.
    log.res.length = res.get('Content-Length');

    // Don't forget to return!
    return log;
  logger: bunyanLogger

CLI usage

You can pipe your json logs into bin/restify-bunyan-logger (or restify-bunyan-logger when installed with npm -g) to get a nicely formatted one-line view.
This is a dirty hack around the standard bunyan logger, until is merged.


This package fits nicely with the default restify bunyan implementation, and will use any custom logger you want. You may want to add server.use(restify.requestLogger()); to get a unique request identifier on each log.

I'm using express

I'm quite sad for you. If you want, you can use this simple wrapper to get lbunyan logging on express:
'use strict';
var onFinished = require('on-finished');
var BunyanLogger = require('restify-bunyan-logger');
var Logger = require('bunyan');

var bunyanLogger = new BunyanLogger({
  custom: function(req, res, route, err, log) {
    log.req.route = req.route ? req.route.path : null;
    return log;
  logger: new Logger.createLogger(),

module.exports = function(req, res, next) {
  req._startAt = new Date();
  onFinished(res, function(err) {
    req.time = function() {
      return req._startAt;
    bunyanLogger(req, res, null, err);