我正在尝试使用 Loopback 4 在我的 REST API 中跟踪每个 HTTP 请求,以便使用 log4js 将它们记录到控制器中,就像这样:
[2020-05-05T19:21:52.191] [INFO] [request-id:47e9a486-1243-1c07-3ac0-0acc9cce2c0e] user.controller.ts - starting request validation
[2020-05-05T19:21:52.191] [INFO] [request-id:1dc81e45-093a-8009-42d2-e545c3a10c9d] user.controller.ts - starting request validation
[2020-05-05T19:21:53.126] [INFO] [request-id:47e9a486-1243-1c07-3ac0-0acc9cce2c0e] user.controller.ts - request validation success
[2020-05-05T19:21:53.145] [ERROR] [request-id:1dc81e45-093a-8009-42d2-e545c3a10c9d] user.controller.ts - request validation failed
这里的主要问题是[request-id:UUID]
部分,因为 Node.js 有时会混淆日志,我无法识别它们中的哪些属于同一个请求。我已经为 Express 应用程序找到了一些解决方案,但是我找不到一种方法来使用 Loopback 4 和 log4js:
- https://itnext.io/request-id-tracing-in-node-js-applications-c517c7dab62d
- https://solidgeargroup.com/en/express-logging-global-unique-request-identificator-nodejs/
- 在 node.js 中按 ID 跟踪请求流
该解决方案可能涉及使用序列处理程序,但我还不知道如何去做。注入 Request 对象的一些提示:https ://github.com/strongloop/loopback-next/issues/1881#issuecomment-431384142