У меня есть служебный метод, который обрабатывает ошибки для всех моих обработчиков Lambda.
static HandlerEndWithError(err: Error): IApiGatewayResponse {
Logger.debug(`handler ended with error. err => ${JSON.stringify(err)}`);
Logger.debug(`error stack ${err.stack}`);
...
}
Вывод в Cloudwatch выглядит следующим образом:
07:01:35
{"message":"handler ended with error. err => {\"generatedMessage\":false,\"name\":\"AssertionError [ERR_ASSERTION]\",\"code\":\"ERR_ASSERTION\",\"expected\":true,\"operator\":\"==\"}","level":"debug"}
07:01:41
{"message":"error stack AssertionError [ERR_ASSERTION]: the Address field is required in the request body\n at assert ... (abbreviated)
Обратите внимание на время, которое требуется дляLogger для регистрации стека составляет 6 секунд в этом случае.
Если я изменю свой метод на запись только err.message, то он будет работать как положено (несколько мс на запись).
Есть идеи, как лучше регистрировать ошибку с помощью своего стека?