diff --git a/logger.js b/logger.js index bca8c77..20c110b 100644 --- a/logger.js +++ b/logger.js @@ -115,6 +115,7 @@ function pinoLogger (opts, stream) { log[level]( onRequestErrorObject(req, res, error, { + [reqKey]: req, [resKey]: res, [errKey]: error, [responseTimeKey]: responseTime @@ -127,6 +128,7 @@ function pinoLogger (opts, stream) { log[level]( onRequestSuccessObject(req, res, { + [reqKey]: req, [resKey]: res, [responseTimeKey]: responseTime }), @@ -141,7 +143,7 @@ function pinoLogger (opts, stream) { const log = quietReqLogger ? logger.child({ [requestIdKey]: req.id }) : logger - let fullReqLogger = log.child({ [reqKey]: req }) + let fullReqLogger = log const customPropBindings = (typeof customProps === 'function') ? customProps(req, res) : customProps if (customPropBindings) { fullReqLogger = fullReqLogger.child(customPropBindings) diff --git a/test/test.js b/test/test.js index 9169da0..528c9a5 100644 --- a/test/test.js +++ b/test/test.js @@ -1260,6 +1260,9 @@ test('uses custom request properties and a receivedMessage callback and the prop const dest = split(JSON.parse) const message = DEFAULT_REQUEST_RECEIVED_MSG const logger = pinoHttp({ + customReceivedObject: function (req) { + return { req } + }, customReceivedMessage: function (_req, _res) { return message }, @@ -1444,3 +1447,31 @@ test('quiet request logging - custom request id key', function (t) { }) }, handler) }) + +test('uses the nested key passed in as an option to hold values', function (t) { + const NESTED_KEY_VALUE = 'someKey' + const dest = split(JSON.parse) + const logger = pinoHttp({ nestedKey: NESTED_KEY_VALUE }, dest) + + setup(t, logger, function (err, server) { + t.error(err) + doGet(server) + }) + + dest.on('data', function (line) { + const nestedObject = line[NESTED_KEY_VALUE] + + t.type(nestedObject, 'object', `${NESTED_KEY_VALUE} should exist`) + t.type(nestedObject.req, 'object', `req should be nested under ${NESTED_KEY_VALUE}`) + t.type(nestedObject.res, 'object', `res should be nested under ${NESTED_KEY_VALUE}`) + t.type(nestedObject.responseTime, 'number', `responseTime should be nested under ${NESTED_KEY_VALUE}`) + + t.ok(nestedObject, `${NESTED_KEY_VALUE} is defined`) + t.ok(nestedObject.req, `${NESTED_KEY_VALUE}.req is defined`) + t.ok(nestedObject.req, `${NESTED_KEY_VALUE}.res is defined`) + t.notOk(line.req, 'req should be nested under nestedKey') + t.notOk(line.res, 'res should be nested under nestedKey') + + t.end() + }) +})