A naplózás ajánlott eljárásai a következők:
Ne használjon sztringformázást vagy interpolációt. A sztringek naplózása
$"This broke {brokenThing}"
nem hasznos a hibakereséshez.Adja át az objektumokat, hogy kereshető mezőkké váljanak.
Ahelyett
LogInformation(LogEventIds.StartProcessing, $"Processing has started on item {Item.itemNumber}");
, hogy a következőt használjuk:- Egy objektum, mint ilyen, például
LogInformationObject(LogEventIds.StartProcessing, Item);
, vagy - Névtelen objektumok, például
LogInformationObject(LogEventIds.StartProcessing, new {Item.itemNumber, Item.itemDescription, someData});
.
- Egy objektum, mint ilyen, például
Kövesse a LogEventIdsben ismertetett EventId számozási konvenciókat.
Minden jelentős munkatörzs esetében használja a következő naplózási mintát:
- Használjon
LogInformationObject
bejegyzéskor, például kódoló feladat indításakor. - Használjon
LogInformationObject
sikert, például ha a kódolási feladat sikeres. - Használjon
LogWarningObject
,LogErrorObject
vagyLogCriticalObject
hiba esetén, például ha a kódolási feladat meghiúsul. Használjon kivételmetódus-változatokat, ha vannak ilyenek.
- Használjon
Bár bármilyen információt naplózhat bármely szakaszban, ne szennyezi a naplókat idegen zajjal.
ObjectLogger
Az ObjectLogger with IObjectLogger egy kis burkoló segédprogram a standard logger/ILoggerhez. Ez az egyvonalas segédprogram naplózza a C#-objektumokat úgy, hogy c# objektumokat szótárobjektumokká konvertál, amelyeket a naplózó felhasználhat.
Az ObjectLogger/IObjectLogger az olyan naplózó metódusok használatát korlátozza, amelyek nem EventIds
rendelkeznek adaptermintával, nem pedig örökléssel. Ez a korlátozás arra kényszeríti a fejlesztőket, hogy használják EventIds
a hibakereséshez hasznos elemet.
Az ObjectLogger használatára vonatkozó további javaslatok a következők:
- Ne hagyja ki az IObjectLoggert az ILogger használatával.
- Használja az IObjectLoggert az osztály megfelelő típusával:
IObjectLogger<myClass>
. - A kivételkezelés fogási blokkjában használja a kivételeket tartalmazó IObjectLogger metódusokat. Az olyan naplózási szolgáltatók, mint az Application Elemzések, használhatják a kivételadatokat.
Naplózási séma és adatok
A mögöttes Event Grid futtatókörnyezeti infrastruktúra alapsémát biztosít. Az Event Grid eseményséma tartalmazza az esemény időpontját, a forráseszközt, a súlyossági szintet és a sztringüzenetet. A Logger/ILogger alapértelmezett egyéni tulajdonságai közé tartozik az EventId
, Category
és RequestPath
a .
Környezeti objektumok
Ha összetett API-kat és munkafolyamatokat szeretne használni, amelyek több bemenetet és kimenetet igényelnek, létrehozhat egy környezeti objektumot, amely a kód által átadható vagy generálható fontos változók tulajdonságcsomagja. A környezeti objektumok számos paramétert kezelhetnek, és a metódus-aláírásoknak nem kell módosítaniuk a paraméterek hozzáadásakor vagy eltávolításakor. A környezeti objektumokat egységként is átadhatja a naplózónak és más felületeknek.
Például a következő helyett:
var store = new StorageBlob();
var tier = req.Query["tier"];
var result = await store.SetBlobStorageTier(blobName, tier);
logger.LogInformationObject(LogEventIds.setBlobProperties, result);
Kód:
var storageContext = new StorageContext();
storageContext.Store = new StorageBlob();
storageContext.Tier = req.Query["tier"];
storageContext.Result = await store.SetBlobStorageTier(blobName, storageContext.Tier);
logger.LogInformationObject(LogEventIds.setBlobProperties, storageContext);
Naplózási szintek
Előfordulhat, hogy a megfelelő naplózási szint hozzárendelése nem egyszerű. A naplószintek alábbi általános leírása a LogLevel Enum függvényből származik.
Loglevel | Enum | Leírás |
---|---|---|
LogTrace | 0 | A legrészletesebb üzeneteket tartalmazza, és bizalmas alkalmazásadatokat tartalmazhat. Ezek az üzenetek alapértelmezés szerint ki vannak kapcsolva, és éles környezetben nem kapcsolhatók be. |
LogDebug | 1 | Interaktív vizsgálathoz használható a fejlesztés során. Ezek a naplók elsősorban olyan információkat tartalmaznak, amelyek hasznosak a hibakereséshez, és nem rendelkeznek hosszú távú értékkel. |
LogInformation | 2 | Nyomon követi az alkalmazás általános folyamatát. Ezeknek a naplóknak hosszú távú értékkel kell rendelkezniük. |
LogWarning | 3 | Az alkalmazásfolyamat rendellenes vagy váratlan eseményét emeli ki, de nem állítja le az alkalmazás végrehajtását. |
LogError | 4 | Naplózza, ha a végrehajtás aktuális folyamata leáll egy hiba miatt. Ezeknek a naplóknak nem alkalmazásszintű, hanem az aktuális tevékenység hibáit kell jelezniük. |
LogCritical | 5 | A cikk egy helyreállíthatatlan alkalmazást vagy rendszer összeomlást, vagy azonnali figyelmet igénylő katasztrofális hibát ír le. |
LogNone | 6 | Naplóüzenetek írásához nem használható. Megadja, hogy egy naplózási kategória ne írjon üzeneteket. |
Következő lépések
Termékdokumentáció:
Microsoft Learn-modulok: