nestjs-pinoで構造化ログを出力する際の重複フィールドを避ける方法
Nest.js
pino
Knowledge
Decision
Operation
Principle
nestjs-pinoは自動的にリクエスト情報をログに追加するため、手動で同じ情報を追加すると重複してしまう。
nestjs-pinoが自動追加するフィールド:
- req: リクエスト情報(method, url, headers, remoteAddress, remotePort)
- context: ロガーの名前
- hostname, pid: システム情報
- level: ログレベル
- dd: Datadog関連情報
例外ハンドラーなどで構造化ログを出力する際は、nestjs-pinoが提供しない情報のみ追加する:
Datadogのログアラートでは、nestjs-pinoが追加した @req.method などを使用: