http-ndjson
v3.1.0
Published
Log http requests as ndjson
Downloads
760
Maintainers
Readme
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 = require('http-ndjson')
const http = require('http')
http.createServer(function (req, res) {
const setSize = httpNdjson(req, res, console.log)
const myCoolResponse = 'chickens'
setSize(myCoolResponse.length)
res.end(myCoolResponse)
}).listen()
{ 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 = require('http-ndjson')
const http = require('http')
http.createServer(function (req, res) {
const opts = { req: { requestId: req.headers['requestId'] } }
httpNdjson(req, res, opts, console.log)
res.end()
}).listen()
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