Package Exports
- http-ndjson
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (http-ndjson) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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