Joi 不会将验证错误写入日志

问题描述

我使用 Joi 进行输入验证。我对 Joi 的错误响应很满意,但我想打印它以记录日志。 我知道在“选项”部分中处理失败的选项,例如:

options: {
  response: {
    failAction: async (req,h,err) => {
      if(err) {
          console.log(`Server error: ${err}`)
      }
    }
  }
}

但由于我有很多 API,我不想为每个 API 添加一个处理程序。 每当验证失败时,我都会从 Joi 框架中搜索此日志。

Joi 版本:17.1.1

解决方法

最后在我的 server.js 文件中添加以下代码成功:

server.events.on('response',function (request) {
        if (request.response !== undefined && request.response.source !== undefined && request.response.source.validation !== undefined &&
            request.response.source.validation.source === "payload") {
            logger.error(request.response.source.validation);
        }
    });

If 语句只需要处理 Joi 验证错误而不是打印所有响应错误。