UNPKG

1.25 kBJavaScriptView Raw
1'use strict'
2
3/**
4 * Shamefully taken from https://github.com/tellnes/bunyan-middleware
5 */
6
7const { get } = require('lodash')
8
9function processHeaderNames (property) {
10 if (property && property.length) {
11 return property.map(function (name) {
12 return name.toLowerCase()
13 })
14 } else {
15 return false
16 }
17}
18
19function requestSerializer (req) {
20 const config = require('config').get('logs.http')
21
22 var obj = {
23 method: req.method,
24 url: req.originalUrl || req.url,
25 headers: req.headers,
26 query: req.query,
27 remoteAddress: get(req, 'connection.remoteAddress'),
28 remotePort: get(req, 'connection.remotePort')
29 }
30
31 const obscureHeaders = processHeaderNames(config.get('obscureHeaders'))
32 const excludeHeaders = processHeaderNames(config.get('excludeHeaders'))
33
34 if (obj.headers && (obscureHeaders || excludeHeaders)) {
35 obj.headers = Object.keys(obj.headers).reduce(function (memo, name) {
36 if (excludeHeaders && excludeHeaders.includes(name)) {
37 return memo
38 }
39
40 if (obscureHeaders && obscureHeaders.includes(name)) {
41 memo[name] = null
42 return memo
43 }
44
45 memo[name] = obj.headers[name]
46 return memo
47 }, {})
48 }
49
50 return obj
51}
52
53module.exports = requestSerializer