NestJS
The ClickStack NestJS統合により、ロガーを作成するか、デフォルトのロガーを使用してClickStackにログを送信できます(nest-winstonにより提供されています)。
このガイドでは以下を統合します:
| ✅ ログ | ✖️ メトリクス | ✖️ トレース |
メトリクスやAPM/トレースを送信するには、対応する言語統合をアプリケーションに追加する必要があります。
始めに
HyperDXNestLoggerModuleをルートのAppModuleにインポートし、forRoot()メソッドを使用して構成します。
その後、winstonインスタンスは、プロジェクト全体でHDX_LOGGER_MODULE_PROVIDERインジェクショントークンを使用して注入できるようになります:
Nestロガーの置き換え(ブートストラッピング用にも)
これを行うことで、依存性注入を放棄することになります。つまり、forRootおよびforRootAsyncは必要なく、使用すべきではありません。メインモジュールからそれらを削除してください。
依存性注入を使用することには一つの小さな欠点があります。Nestはまずアプリケーションをブートストラップする必要があります(モジュールやプロバイダーをインスタンス化し、依存関係を注入など)が、このプロセス中にHyperDXNestLoggerのインスタンスはまだ利用できず、Nestは内部ロガーにフォールバックします。
1つの解決策は、アプリケーションライフサイクルの外側でロガーを作成し、createLogger関数を使用してこれをNestFactory.createに渡すことです。Nestは私たちのカスタムロガー(createLoggerメソッドによって返される同じインスタンス)をLoggerクラスにラップし、すべての呼び出しをそれにフォワードします:
main.tsファイルでロガーを作成します
メインモジュールを変更してLoggerサービスを提供します:
その後、@nestjs/commonからのLoggerで型ヒントを付けて単純にロガーを注入します: