Skip to content

Commit

Permalink
Merge pull request #50 from eoinsha/v2.x.x
Browse files Browse the repository at this point in the history
Backport ignorePaths support to v2.x.x
  • Loading branch information
mcollina committed Feb 15, 2018
2 parents e1844c7 + 74681cd commit f868904
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
12 changes: 12 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict'

const pino = require('pino')
const nullLogger = require('abstract-logging')

const levels = ['trace', 'debug', 'info', 'warn', 'error']
module.exports.levelTags = {
Expand Down Expand Up @@ -39,13 +40,24 @@ function register (server, options, next) {
return next(new Error('invalid tag levels'))
}

var ignoreTable = {}
if (options.ignorePaths) {
for (let i = 0; i < options.ignorePaths.length; i++) {
ignoreTable[options.ignorePaths[i]] = true
}
}

const mergeHapiLogData = options.mergeHapiLogData

// expose logger as 'server.logger()'
server.decorate('server', 'logger', () => logger)

// set a logger for each request
server.ext('onRequest', (request, reply) => {
if (options.ignorePaths && ignoreTable[request.url.path]) {
request.logger = nullLogger
return reply.continue()
}
request.logger = logger.child({ req: request })
reply.continue()
})
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"standard": "^10.0.0"
},
"dependencies": {
"abstract-logging": "^1.0.0",
"pino": "^4.10.2"
},
"repository": {
Expand Down
30 changes: 30 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -721,3 +721,33 @@ experiment('logging with request payload', () => {
})
})
})

experiment('ignore request logs for paths in ignorePaths', () => {
test('when path matches entry in ignorePaths, nothing should be logged', (done) => {
const server = getServer()
const stream = sink((data) => {
expect(data.req.url).to.not.equal('/ignored')
done()
})
const logger = require('pino')(stream)
const plugin = {
register: Pino.register,
options: {
instance: logger,
ignorePaths: ['/ignored']
}
}

server.register(plugin, (err) => {
expect(err).to.be.undefined()
server.inject({
method: 'PUT',
url: '/ignored'
})
server.inject({
method: 'PUT',
url: '/'
})
})
})
})

0 comments on commit f868904

Please sign in to comment.