Teilen über


CA1848: Verwenden der LoggerMessage-Delegaten

Eigenschaft Wert
Regel-ID CA1848
Titel Verwenden der LoggerMessage-Delegaten
Kategorie Leistung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 10 aktiviert No

Ursache

Verwendung von Protokollierungserweiterungsmethoden wie LogInformation und LogDebug.

Regelbeschreibung

Verwenden Sie für Hochleistungsprotokollierungsszenarien das LoggerMessage-Muster anstelle von Logger<T> Erweiterungsmethoden.

Behandeln von Verstößen

Verwenden Sie LoggerMessageAttribute, um Verstöße gegen diese Regel zu beheben. (Wenn Sie .NET 5 oder früher verwenden, verwenden Sie die LoggerMessage Klasse.)

public class SomethingDoer
{
   private readonly ILogger _logger;
   public SomethingDoer(ILogger<SomethingDoer> logger)
   {
       _logger = logger;
   }

   public void DoSomething()
   {
       // This call violates CA1848.
       _logger.LogInformation("Did something!");
   }
}

Der folgende Code behebt den Verstoß.

public partial class SomethingDoer
{
   private readonly ILogger _logger;
   public SomethingDoer(ILogger<SomethingDoer> logger)
   {
       _logger = logger;
   }

   public void DoSomething()
   {
       Log_DidSomething();
   }

   [LoggerMessage(Level = LogLevel.Information, Message = "Did something!")]
   private partial void Log_DidSomething();
}

LoggerMessage bietet die folgenden Leistungsvorteile gegenüber Logger<T> Erweiterungsmethoden:

  • Protokollierungserweiterungsmethoden erfordern das Konvertieren von Werttypen wie int in object (sogenanntes Boxing). Das LoggerMessage-Muster verhindert das Konvertieren mithilfe von statischen Action-Feldern und mithilfe von Erweiterungsmethoden mit stark typisierten Parametern.
  • Protokollierungserweiterungsmethoden müssen die Meldungsvorlagen (sogenannte Formatzeichenfolgen) jedes Mal analysieren, wenn eine Protokollmeldung geschrieben wird. LoggerMessage erfordert das Analysieren einer Vorlage nur einmal beim Festlegen der Meldung.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Weitere Informationen