I am using koa-bunyan-logger to log my request like this:
'use strict'
const koaBunyanLogger = require('koa-bunyan-logger');
const Koa = require('koa');
const mount = require('koa-mount')
const dbDriver = require('./database/interface')
const { userAgent } = require('koa-useragent');
const app = new Koa();
const server = app
.use(koaBunyanLogger())
.use(koaBunyanLogger.requestLogger({
updateLogFields: function (fields) {
delete fields.req.headers.authorization
}
}))
.use(mount(require('./routes/auth/jwt')))
.use(mount(require('./routes/knexplay')))
.listen(3000);
module.exports = server
What I am trying to do is to avoid logging tokens. But what it does is deleting the field from the original request object, crashing the app.
Even if I use formatRequestMessage(), it only effects msg field.
Is there a way to filter fields somehow?
Using serializer I am able to solve the problem but not sure if it is the best approach. Here is the code I used:
.use(koaBunyanLogger({
serializers: {
req: function (req) {
const { authorization, ...keepHeaders } = req.headers
return {
method: req.method,
url: req.url,
headers: keepHeaders
};
},
res: function (res) {
const { authorization, ...keepHeaders } = res.req.headers
const { req, ...keep } = res
return {
...keep,
req: {
method: res.req.method,
url: res.req.url,
headers: keepHeaders
}
};
},
}
}))