Bewerken

Delen via


Logboekregistratie in Gridwich

Azure

Aanbevolen procedures voor logboekregistratie zijn onder andere:

  • Gebruik geen tekenreeksopmaak of interpolatie. Het vastleggen van een tekenreeks met $"This broke {brokenThing}" is niet handig voor foutopsporing.

  • Geef objecten door zodat ze doorzoekbare velden worden.

    Gebruik in plaats van LogInformation(LogEventIds.StartProcessing, $"Processing has started on item {Item.itemNumber}");:

    • Een object als zodanig, zoals LogInformationObject(LogEventIds.StartProcessing, Item);, of
    • Anonieme objecten, zoals LogInformationObject(LogEventIds.StartProcessing, new {Item.itemNumber, Item.itemDescription, someData});.
  • Volg de EventId-nummeringsconventies die worden beschreven in LogEventIds.

  • Gebruik voor elke belangrijke hoeveelheid werk het volgende logboekregistratiepatroon:

    • Gebruik LogInformationObject deze optie bij invoer, bijvoorbeeld wanneer u een codetaak wilt starten.
    • Gebruik LogInformationObject deze functie bij succes, bijvoorbeeld wanneer de codeertaak is geslaagd.
    • Gebruik LogWarningObject, LogErrorObjectof LogCriticalObject bij een fout, bijvoorbeeld als de coderingstaak mislukt. Gebruik uitzonderingsmethodevarianten, indien van toepassing.
  • Hoewel u alle informatie op elk moment kunt vastleggen, vervuilt u logboeken niet met overbodige ruis.

ObjectLogger

ObjectLogger met IObjectLogger is een klein wrapper-hulpprogramma voor de standaard Logger/ILogger. Met dit hulpprogramma voor één liner registreert u elk C#-object door C#-objecten te converteren naar woordenlijstobjecten die door de logger kunnen worden gebruikt.

ObjectLogger/IObjectLogger beperkt het gebruik van logboekregistratiemethoden die niet hebben EventIds met behulp van een adapterpatroon, in plaats van overname. Deze beperking dwingt ontwikkelaars te gebruiken EventIds, wat handig is voor foutopsporing.

Andere aanbevelingen voor het gebruik van ObjectLogger zijn:

  • Sla IObjectLogger niet over met behulp van ILogger.
  • Gebruik IObjectLogger met het juiste type voor uw klas: IObjectLogger<myClass>.
  • Gebruik in een catch-blok voor uitzonderingsafhandeling de IObjectLogger-methoden die uitzonderingen bevatten. Logboekregistratieproviders zoals Application Insights kunnen de uitzonderingsgegevens gebruiken.

Schema en gegevens vastleggen

De onderliggende Event Grid-runtime-infrastructuur biedt een basisschema. Het Event Grid-gebeurtenisschema bevat de gebeurtenistijd, het apparaat van oorsprong, het ernstniveau en het tekenreeksbericht. Logger/ILogger standaard aangepaste eigenschappen omvatten EventId, Categoryen RequestPath.

Contextobjecten

Als u wilt werken met complexe API's en werkstromen waarvoor verschillende invoer en uitvoer zijn vereist, kunt u een contextobject maken. Dit is een eigenschapsverzameling met belangrijke variabelen die door uw code kunnen worden doorgegeven of gegenereerd. Contextobjecten kunnen veel parameters verwerken en methodhandtekeningen hoeven niet te worden gewijzigd wanneer u parameters toevoegt of verwijdert. U kunt contextobjecten ook doorgeven aan de logger en andere interfaces als een eenheid.

U kunt bijvoorbeeld, in plaats van:

var store = new StorageBlob();
var tier = req.Query["tier"];
var result = await store.SetBlobStorageTier(blobName, tier);
logger.LogInformationObject(LogEventIds.setBlobProperties, result);

U kunt het volgende coden:

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);

Logboekniveaus

Het toewijzen van het juiste logboekregistratieniveau is mogelijk niet eenvoudig. De volgende algemene beschrijvingen van logboekniveaus zijn afkomstig van LogLevel Enum.

Loglevel Enum Beschrijving
LogTrace 0 Bevat de meest gedetailleerde berichten en kan gevoelige toepassingsgegevens bevatten. Deze berichten zijn standaard uitgeschakeld en moeten niet worden ingeschakeld in een productieomgeving.
LogDebug 1 Wordt gebruikt voor interactief onderzoek tijdens de ontwikkeling. Deze logboeken bevatten voornamelijk informatie die nuttig is voor foutopsporing en geen langetermijnwaarde hebben.
LogInformation 2 Houdt de algemene stroom van de toepassing bij. Deze logboeken moeten een langetermijnwaarde hebben.
LogWarning 3 Markeert een abnormale of onverwachte gebeurtenis in de toepassingsstroom, maar stopt de uitvoering van de toepassing niet.
LogError 4 Logboeken wanneer de huidige uitvoeringsstroom wordt gestopt vanwege een fout. Deze logboeken moeten fouten in de huidige activiteit aangeven, niet een toepassingsbrede fout.
LogCritical 5 Beschrijft een onherstelbare toepassing of systeemcrash of een onherstelbare fout waarvoor onmiddellijke aandacht is vereist.
LogNone 6 Niet gebruikt voor het schrijven van logboekberichten. Hiermee geeft u op dat een categorie voor logboekregistratie geen berichten mag schrijven.

Volgende stappen

Productdocumentatie:

Microsoft Learn-modules: