From 73afa4c6cecf25e759a26cde1584af41a0c91838 Mon Sep 17 00:00:00 2001 From: Joel Mukuthu Date: Sat, 22 Jul 2023 22:12:58 +0200 Subject: [PATCH] fix: use `messageKey` when giving message precedence over error (#1746) * test: add failing test showing that `messageKey` is not used * fix: use `messageKey` when giving message preference over error --- lib/proto.js | 4 +++- test/error.test.js | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/proto.js b/lib/proto.js index e9bd4ed70..43a3b7b8b 100644 --- a/lib/proto.js +++ b/lib/proto.js @@ -20,6 +20,7 @@ const { serializersSym, formattersSym, errorKeySym, + messageKeySym, useOnlyCustomLevelsSym, needsMetadataGsym, redactFmtSym, @@ -181,6 +182,7 @@ function write (_obj, msg, num) { const t = this[timeSym]() const mixin = this[mixinSym] const errorKey = this[errorKeySym] + const messageKey = this[messageKeySym] const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy let obj @@ -193,7 +195,7 @@ function write (_obj, msg, num) { } } else { obj = _obj - if (msg === undefined && _obj.msg === undefined && _obj[errorKey]) { + if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) { msg = _obj[errorKey].message } } diff --git a/test/error.test.js b/test/error.test.js index 1869c3909..01be0f4f6 100644 --- a/test/error.test.js +++ b/test/error.test.js @@ -376,3 +376,23 @@ test('msg should take precedence over error message on mergingObject', async ({ msg: 'my message' }) }) + +test('considers messageKey when giving msg precedence over error', async ({ same }) => { + const err = new Error('myerror') + const stream = sink() + const instance = pino({ messageKey: 'message' }, stream) + instance.error({ message: 'my message', err }) + const result = await once(stream, 'data') + delete result.time + same(result, { + pid, + hostname, + level: 50, + err: { + type: 'Error', + stack: err.stack, + message: err.message + }, + message: 'my message' + }) +})