From e67171d1141c7683d4e9fb28080a7e649d06769e Mon Sep 17 00:00:00 2001 From: juampi Date: Tue, 4 Jun 2024 14:52:52 -0300 Subject: [PATCH 1/2] feature: add logReturnedValue to log response returned value --- README.md | 6 ++++++ index.js | 1 + test.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/README.md b/README.md index 9096bd9..3078d85 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,12 @@ events"](#hapievents) section. When enabled, responses with status codes in the 400-500 range will have the value returned by the hapi lifecycle method added to the `response` event log as `err`. +### `options.logReturnedValue: boolean` + + **Default**: `false` + + When enabled, add the response returned value (Hapi `request.response.source`) as `returnedValue` to the `response` event log. + ### `options.logRequestStart: boolean | (Request) => boolean` **Default**: false diff --git a/index.js b/index.js index dd570d0..2e25569 100644 --- a/index.js +++ b/index.js @@ -191,6 +191,7 @@ async function register (server, options) { tags: options.logRouteTags ? request.route.settings.tags : undefined, err: options.log4xxResponseErrors && (statusCode >= 400 && statusCode < 500) ? request.response.source : undefined, res: request.raw.res, + returnedValue: options.logReturnedValue && request.response && request.response.source !== undefined ? request.response.source : undefined, responseTime }, requestCompleteMessage(request, responseTime) diff --git a/test.js b/test.js index e7c1ab4..172e8f0 100644 --- a/test.js +++ b/test.js @@ -1587,6 +1587,60 @@ experiment('options.logRequestComplete', () => { }) }) +experiment('options.logReturnedValue', () => { + test('when options.logReturnedValue is true, the response returned value should be added to the log as "returnedValue"', async () => { + const server = getServer() + + let done + + const finish = new Promise(function (resolve, reject) { + done = resolve + }) + + server.route({ + path: '/', + method: 'GET', + handler: async (req, h) => { + return { foo: 100 } + } + }) + + await registerWithOptionsSink(server, { level: 'info', logReturnedValue: true }, data => { + expect(data.returnedValue).to.be.equals({ foo: 100 }) + done() + }) + + await server.inject('/') + await finish + }) + + test('when options.logReturnedValue is omitted, "returnedValue" should not be added to the response event log', async () => { + const server = getServer() + + let done + + const finish = new Promise(function (resolve, reject) { + done = resolve + }) + + server.route({ + path: '/', + method: 'GET', + handler: async (req, h) => { + return { foo: 101 } + } + }) + + await registerWithOptionsSink(server, { level: 'info' }, data => { + expect(data.returnedValue).to.be.undefined() + done() + }) + + await server.inject('/') + await finish + }) +}) + experiment('logging with mergeHapiLogData option enabled', () => { test("log event data is merged into pino's log object", async () => { const server = getServer() From cec0d6e37b97ae9c518a5dbaba54dcf0fd15fe0e Mon Sep 17 00:00:00 2001 From: juampi Date: Wed, 5 Jun 2024 09:55:54 -0300 Subject: [PATCH 2/2] rename option to "logResponsePayload" --- README.md | 4 ++-- index.js | 2 +- test.js | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 3078d85..29d3fae 100644 --- a/README.md +++ b/README.md @@ -120,11 +120,11 @@ events"](#hapievents) section. When enabled, responses with status codes in the 400-500 range will have the value returned by the hapi lifecycle method added to the `response` event log as `err`. -### `options.logReturnedValue: boolean` +### `options.logResponsePayload: boolean` **Default**: `false` - When enabled, add the response returned value (Hapi `request.response.source`) as `returnedValue` to the `response` event log. + When enabled, add the response returned value (Hapi `request.response.source`) as `responsePayload` to the `response` event log. ### `options.logRequestStart: boolean | (Request) => boolean` diff --git a/index.js b/index.js index 2e25569..66c0aa3 100644 --- a/index.js +++ b/index.js @@ -191,7 +191,7 @@ async function register (server, options) { tags: options.logRouteTags ? request.route.settings.tags : undefined, err: options.log4xxResponseErrors && (statusCode >= 400 && statusCode < 500) ? request.response.source : undefined, res: request.raw.res, - returnedValue: options.logReturnedValue && request.response && request.response.source !== undefined ? request.response.source : undefined, + responsePayload: options.logResponsePayload && request.response && request.response.source !== undefined ? request.response.source : undefined, responseTime }, requestCompleteMessage(request, responseTime) diff --git a/test.js b/test.js index 172e8f0..20a3c58 100644 --- a/test.js +++ b/test.js @@ -1587,8 +1587,8 @@ experiment('options.logRequestComplete', () => { }) }) -experiment('options.logReturnedValue', () => { - test('when options.logReturnedValue is true, the response returned value should be added to the log as "returnedValue"', async () => { +experiment('options.logResponsePayload', () => { + test('when options.logResponsePayload is true, the response returned value should be added to the log as "responsePayload"', async () => { const server = getServer() let done @@ -1605,8 +1605,8 @@ experiment('options.logReturnedValue', () => { } }) - await registerWithOptionsSink(server, { level: 'info', logReturnedValue: true }, data => { - expect(data.returnedValue).to.be.equals({ foo: 100 }) + await registerWithOptionsSink(server, { level: 'info', logResponsePayload: true }, data => { + expect(data.responsePayload).to.be.equals({ foo: 100 }) done() }) @@ -1614,7 +1614,7 @@ experiment('options.logReturnedValue', () => { await finish }) - test('when options.logReturnedValue is omitted, "returnedValue" should not be added to the response event log', async () => { + test('when options.logResponsePayload is omitted, "responsePayload" should not be added to the response event log', async () => { const server = getServer() let done @@ -1632,7 +1632,7 @@ experiment('options.logReturnedValue', () => { }) await registerWithOptionsSink(server, { level: 'info' }, data => { - expect(data.returnedValue).to.be.undefined() + expect(data.responsePayload).to.be.undefined() done() })