http-ndjson
Log http requests as ndjson. Works pretty well with bole
, so you should
probably use it with that. That is my recommendation.
Installation
$ npm install http-ndjson
Usage
const httpNdjson = const http = http
name: 'http' method: 'GET' message: 'request' url: '/' name: 'http' method: 'GET' message: 'response' url: '/' statusCode: 200 elapsed: '5ms'
Log custom properties
http-ndjson
logs a sensible set of standard properties, but sometimes there's
a need to dive in and log more. An optional third argument can be added with
custom fields that will be logged on either request
or response
.
const httpNdjson = const http = http
If opts.req
or opts.res
is a function, it will be called and its return value will be used to set custom fields.
Forward headers
Determining the origin of a request can be hard when using reverse-proxies.
It's not too uncommon for users to mask their IP by providing an
x-forwarded-for
header. http-ndjson
makes no assumptions about forwarding
headers and logs all properties instead. The following headers are logged:
- x-forwarded-for: standardized reverse proxy header (rfc7239)
- x-real-ip: non-standard reverse proxy header
- http-client-ip: non-standard reverse proxy header
API
readStream = httpNdjson(req, res, opts?, cb)
Create an http logger. Returns a write stream. Opts can contain the following values:
- req: an object with values that will be logged on
request
- res: an object with values that will be logged on
response
- opts: set options
- cb: handle the returned message