Closed
Description
Use case
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
The cause data property of an Error instance indicates the specific original cause of the error.
Error's cause property is a useful way to provide extra information about an error, particularly because it is a structured object, rather than adding to the string message.
However powertools does not include cause in log messages
import { Logger } from '@aws-lambda-powertools/logger'
const err = new Error('message', { cause : new Error('cause') })
console.log(err)
new Logger().error("err", err)
Error: message
at file://test.mjs:2:13
at ModuleJob.run (node:internal/modules/esm/module_job:193:25)
... 3 lines matching cause stack trace ...
at async handleMainPromise (node:internal/modules/run_main:65:12) {
[cause]: Error: cause
at file://test.mjs:2:44
at ModuleJob.run (node:internal/modules/esm/module_job:193:25)
at async Promise.all (index 0)
at async ESMLoader.import (node:internal/modules/esm/loader:530:24)
at async loadESM (node:internal/process/esm_loader:91:5)
{
"level": "ERROR",
"message": "err",
"service": "service_undefined",
"timestamp": "2023-03-09T19:27:32.538Z",
"error": {
"name": "Error",
"location": "node:internal/modules/esm/module_job:193",
"message": "message",
"stack": "Error: message\n at file://test.mjs:2:13\n at ModuleJob.run (node:internal/modules/esm/module_job:193:25)\n at async Promise.all (index 0)\n at async ESMLoader.import (node:internal/modules/esm/loader:530:24)\n at async loadESM (node:internal/process/esm_loader:91:5)\n at async handleMainPromise (node:internal/modules/run_main:65:12)"
}
}
Solution/User Experience
powertools should include cause
when it is defined.
Alternative solutions
No response
Acknowledgment
- This feature request meets Lambda Powertools Tenets
- Should this be considered in other Lambda Powertools languages? i.e. Python, Java, and .NET
Future readers
Please react with 👍 and your use case to help us understand customer demand.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Shipped