Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Tulajdonság | Érték |
|---|---|
| Szabályazonosító | CA1848 |
| Cím | A LoggerMessage-meghatalmazottak használata |
| Kategória | Teljesítmény |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
A naplózóbővítmény metódusainak használata, például LogInformation ésLogDebug.
Szabály leírása
Nagy teljesítményű naplózási forgatókönyvek esetén használja a LoggerMessage mintát a bővítménymetelyek helyett Logger<T> .
Szabálysértések kijavítása
A szabály megsértéseinek kijavítására használható LoggerMessageAttribute . (Vagy ha .NET 5 vagy korábbi verziót használ, használja az osztályt LoggerMessage .)
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!");
}
}
Az alábbi kód kijavítja a szabálysértést.
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 a bővítménymetelyekkel szemben Logger<T> a következő teljesítményelőnyöket biztosítja:
- A naplózási bővítmény metódusaihoz "boxing" (konvertálás) típusú értéktípusokra van szükség, például
int:object. A LoggerMessage minta elkerüli a boxingot azáltal, hogy statikus Action mezőket és kiterjesztési metódusokat használ erősen típusos paraméterekkel. - A naplózó bővítmény metódusainak minden alkalommal elemezniük kell az üzenetsablont (elnevezett formátumsztringet), amikor naplóüzenetet írnak. LoggerMessage csak egyszer kell elemezni egy sablont az üzenet definiálásakor.
Mikor kell letiltani a figyelmeztetéseket?
Ne nyomja el a figyelmeztetést ebből a szabályból.