npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bunyan-express-common-log-format

v2.1.2

Published

A `Common Log Format` serializer for ExpressJS applications using bunyan

Readme

bunyan-express-common-log-format

Build Status Coverage Status semantic-release

Bunyan Common Log Format serializer for ExpressJS applications.


Setup

Installation

Install this package through npm:

$ npm i -S bunyan-express-common-log-format

Adding the serializer

Add the formatter as a serializer to the bunyan configuration:

const bunyan = require('bunyan');
const bunyanExpressCommonLogFormat = require('bunyan-express-common-log-format');

const logger = bunyan.createLogger({
  serializers: { apiCall: bunyanExpressCommonLogFormat },
  // other bunyan configuration here
});

module.exports = logger;

Usage

Once the formatter is installed and the serializer is set-up, use it with a normal log call, using the key used during bunyan setup (apiCall in the example):

Basic usage

const express = require('express');
const logger = require('./shared/logger');

const app = express();

// remember to call `next()` in each route to get to the middleware
app.get(/* ... */);
app.get(/* ... */);

// define the logging middleware
app.use((request, response, next) => {
  logger.info({ apiCall: { request, response } }, 'Express API Call');
  next();
});

Overrides

The serializer will do it's best to extract the necessary information from the given request and response objects, except for authUser and ident, which are currently not extracted. All fields can be overridden with custom values. Pass an overrides object to override any field. The available fields are:

| Field | Type | Description | | --------------- | ------ | -------------------------------------------------------------------------- | | authUser | string | The userid of the person requesting the resource | | contentLength | string | The size of the object returned to the client, in bytes | | date | date | The date, time and timezone of the response | | host | string | The host that requested the resource | | httpVersion | string | The HTTP Protocol used | | ident | string | The [https://tools.ietf.org/html/rfc1413](RFC 1413) identity of the client | | method | string | The request method used to request the resource | | statusCode | string | The HTTP status code returned to the client | | url | string | The URL requested by the client |

This is implemented as follows:

// define the logging middleware
app.use((request, response, next) => {
  logger.info(
    { apiCall: { overrides: { authUser: 'hvolschenk' }, request, response } },
    'Express API Call',
  );
  next();
});

Settings

Pass a settings object to change settings of the serializer. The available settings are:

| Name | Type | Description | | ------------ | ------ | ----------- | | dateFormat | string | The date format to use, please see the dateformat package for options |

This is implemented as follows:

// define the logging middleware
app.use((request, response, next) => {
  logger.info(
    { apiCall: { request, response, settings: { dateFormat: 'mmmm dS, yyyy, h:MM:ss TT' } } },
    'Express API Call',
  );
  next();
});