次の方法で共有


CA1848: LoggerMessage デリゲートを使用する

プロパティ
ルール ID CA1848
Title LoggerMessage デリゲートを使用する
[カテゴリ] パフォーマンス
修正が中断ありか中断なしか なし
.NET 8 では既定で有効 いいえ

原因

LogInformationLogDebug などのロガー拡張メソッドの使用。

規則の説明

高パフォーマンスのログ記録シナリオの場合は、LoggerMessage パターンを使用します。

違反の修正方法

この規則違反の修正には、LoggerMessage を使用します。

LoggerMessage には、ロガー拡張メソッドに比べて次のようなパフォーマンス上の利点があります。

  • ロガー拡張メソッドでは、int などの値の型を object に "ボックス化" (変換) する必要があります。 LoggerMessage パターンでは、静的な Action フィールドと、厳密に型指定されたパラメーターを持つ拡張メソッドを使用してボックス化を回避します。
  • ロガー拡張メソッドでは、ログ メッセージが書き込まれるたびにメッセージ テンプレート (名前付きの書式文字列) を解析する必要があります。 LoggerMessage では、メッセージを定義するときに、一度テンプレートを解析する必要があるだけです。

どのようなときに警告を抑制するか

この規則による警告は抑制しないでください。

こちらもご覧ください