Szerkesztés

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


Naplózás Gridwichben

Azure

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});.
  • 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, LogErrorObjectvagy LogCriticalObject hiba esetén, például ha a kódolási feladat meghiúsul. Használjon kivételmetódus-változatokat, ha vannak ilyenek.
  • 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 EventIdsa 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 RequestPatha .

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: