次のように、log4js を使用してコントローラーにログを記録するために、Loopback 4 を使用して REST API で各 HTTP 要求をトレースしようとしています。
[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 によるリクエスト フローの追跡
解決策には Sequence ハンドラーの使用が含まれる可能性がありますが、その方法はまだわかりません。Request オブジェクトを挿入するヒント: https://github.com/strongloop/loopback-next/issues/1881#issuecomment-431384142