CA1848: LoggerMessage デリゲートを使用する
プロパティ | 値 |
---|---|
ルール ID | CA1848 |
Title | LoggerMessage デリゲートを使用する |
[カテゴリ] | パフォーマンス |
修正が中断ありか中断なしか | なし |
.NET 9 では既定で有効 | いいえ |
原因
LogInformation や LogDebug などのロガー拡張メソッドの使用。
規則の説明
高パフォーマンスのログ記録シナリオの場合は、LoggerMessage パターンを使用します。
違反の修正方法
この規則違反の修正には、LoggerMessage
を使用します。
LoggerMessage には、ロガー拡張メソッドに比べて次のようなパフォーマンス上の利点があります。
- ロガー拡張メソッドでは、
int
などの値の型をobject
に "ボックス化" (変換) する必要があります。 LoggerMessage パターンでは、静的な Action フィールドと、厳密に型指定されたパラメーターを持つ拡張メソッドを使用してボックス化を回避します。 - ロガー拡張メソッドでは、ログ メッセージが書き込まれるたびにメッセージ テンプレート (名前付きの書式文字列) を解析する必要があります。 LoggerMessage では、メッセージを定義するときに、一度テンプレートを解析する必要があるだけです。
どのようなときに警告を抑制するか
この規則による警告は抑制しないでください。
こちらもご覧ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET