Skip to content

Commit

Permalink
fix: use messageKey when giving message precedence over error (#1746)
Browse files Browse the repository at this point in the history
* test: add failing test showing that `messageKey` is not used

* fix: use `messageKey` when giving message preference over error
  • Loading branch information
joelmukuthu committed Jul 22, 2023
1 parent 491b342 commit 73afa4c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
4 changes: 3 additions & 1 deletion lib/proto.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const {
serializersSym,
formattersSym,
errorKeySym,
messageKeySym,
useOnlyCustomLevelsSym,
needsMetadataGsym,
redactFmtSym,
Expand Down Expand Up @@ -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

Expand All @@ -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
}
}
Expand Down
20 changes: 20 additions & 0 deletions test/error.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'
})
})

0 comments on commit 73afa4c

Please sign in to comment.