Megosztás a következőn keresztül:


CA2254: A sablonnak statikus kifejezésnek kell lennie

Tulajdonság Érték
Szabályazonosító CA2254
Cím A sablonnak statikus kifejezésnek kell lennie
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

A naplózó API-nak átadott üzenetsablon nem állandó. Ez akkor fordul elő, ha az átadott sablon sztringösszefűzést vagy interpolációt használ. Ehelyett a sablonnak állandó értéknek kell lennie, amely üzenetsablon formátumban jeleníti meg a naplóüzenetet. For example: "User {User} logged in from {Address}". További információ: Naplóüzenetsablon formázása.

Szabály leírása

A naplózás végrehajtásakor célszerű megőrizni a napló szerkezetét (beleértve a helyőrző neveket is) és a helyőrző értékeket. Ezen információk megőrzése jobb megfigyelhetőséget és keresést tesz lehetővé a naplóösszesítő és monitorozó szoftverekben.

Preferált:

var firstName = "Lorenz";
var lastName = "Otto";

// This tells the logger that there are FirstName and LastName properties
// on the log message, and correlates them with the argument values.
logger.Warning("Person {FirstName} {LastName} encountered an issue", firstName, lastName);

Nem előnyben részesített:

// DO NOT DO THIS

var firstName = "Lorenz";
var lastName = "Otto";

// Here, the log template itself is changing, and the association between named placeholders and their values is lost.
logger.Warning("Person " + firstName + " " + lastName + " encountered an issue");

// String interpolation also loses the association between placeholder names and their values.
logger.Warning($"Person {firstName} {lastName} encountered an issue");

A naplózási üzenet sablonja nem változhat a hívások között.

Szabálysértések kijavítása

Frissítse az üzenetsablont állandó kifejezésként. Ha közvetlenül a sablonban használ értékeket, módosítsa újra a sablont nevesített helyőrzők használatára.

logger.Warning("Person {FirstName} {LastName} encountered an issue", firstName, lastName);

Mikor kell letiltani a hibákat?

Ha a használati eset nem igényel strukturált naplózást, nyugodtan letilthatja a szabály figyelmeztetését. A szabályt akkor is nyugodtan letilthatja, ha a naplóüzenet-sablon egy erőforrásfájlban van definiálva.

Kapcsolódó információk