bunyan-express-common-log-format v2.1.2
bunyan-express-common-log-format
Bunyan Common Log Format serializer for ExpressJS applications.
Setup
Installation
Install this package through npm:
$ npm i -S bunyan-express-common-log-formatAdding 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();
});