このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
NocoBaseは、pino をベースにした高性能なロギングシステムを提供しています。context を利用できる場所であればどこでも、ctx.logger を通じてロガーインスタンスを取得し、プラグインやシステムの実行中に重要なログを記録できます。
これらのメソッドは、異なるログレベル(重要度が高い順)に対応しています。
| レベル | メソッド | 説明 |
|---|---|---|
fatal | ctx.logger.fatal() | 致命的なエラー。通常、プログラムの終了を引き起こします。 |
error | ctx.logger.error() | エラーログ。リクエストまたは操作の失敗を示します。 |
warn | ctx.logger.warn() | 警告情報。潜在的なリスクや予期せぬ状況を知らせます。 |
info | ctx.logger.info() | 通常の実行情報。 |
debug | ctx.logger.debug() | デバッグ情報。開発環境で使用します。 |
trace | ctx.logger.trace() | 詳細なトレース情報。通常、詳細な診断に使用します。 |
各ログ出力は構造化されたJSON形式で、デフォルトで以下のフィールドが含まれます。
| フィールド | 型 | 説明 |
|---|---|---|
level | number | ログレベル |
time | number | タイムスタンプ(ミリ秒) |
pid | number | プロセスID |
hostname | string | ホスト名 |
msg | string | ログメッセージ |
| その他 | object | カスタムコンテキスト情報 |
出力例:
ctx.logger は、現在のプラグイン、モジュール、またはリクエスト元などのコンテキスト情報を自動的に注入し、ログがその発生源をより正確に追跡できるようにします。
出力例(コンテキスト付き):
プラグイン内でカスタムロガーインスタンスを作成し、デフォルト設定を継承または拡張できます。
子ロガーは、親ロガーの設定を継承し、コンテキストを自動的に付加します。
Pinoのログレベルは、数値が大きいほど重要度が高く、小さいほど優先度が低いという定義に従っています。
以下に、ログレベルの完全な階層表を示します。
| レベル名 | 数値 | メソッド名 | 説明 |
|---|---|---|---|
fatal | 60 | logger.fatal() | 致命的なエラー。通常、プログラムが実行を継続できなくなります。 |
error | 50 | logger.error() | 一般的なエラー。リクエストの失敗や操作の異常を示します。 |
warn | 40 | logger.warn() | 警告情報。潜在的なリスクや予期せぬ状況を知らせます。 |
info | 30 | logger.info() | 一般的な情報。システムの状態や通常の操作を記録します。 |
debug | 20 | logger.debug() | デバッグ情報。開発段階での問題分析に使用します。 |
trace | 10 | logger.trace() | 詳細なトレース情報。詳細な診断に使用します。 |
silent | -Infinity | (対応するメソッドなし) | すべてのログ出力をオフにします。 |
Pinoは、現在の level 設定以上のログのみを出力します。例えば、ログレベルが info の場合、debug および trace のログは無視されます。
コンテキストロガーを使用する
プラグイン、モデル、またはアプリケーションのコンテキストで ctx.logger を使用すると、発生源情報を自動的に含めることができます。
ログレベルを使い分ける
error を使用してビジネス例外を記録します。info を使用して状態の変化を記録します。debug を使用して開発デバッグ情報を記録します。ログの過剰な出力を避ける
特に debug および trace レベルでは、開発環境でのみ有効にすることをお勧めします。
構造化データを使用する
文字列を連結するのではなく、オブジェクトパラメータを渡すことで、ログの分析とフィルタリングに役立ちます。
これらのプラクティスに従うことで、開発者はプラグインの実行をより効率的に追跡し、問題をトラブルシューティングし、ロギングシステムの構造化と拡張性を維持できます。