Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Entity Framework Core (EF Core) bevat verschillende mechanismen voor het genereren van logboeken, het reageren op gebeurtenissen en het verkrijgen van diagnostische gegevens. Elk van deze is afgestemd op verschillende situaties en het is belangrijk om het beste mechanisme voor de taak in hand te selecteren, zelfs wanneer meerdere mechanismen kunnen werken. Een database-interceptor kan bijvoorbeeld worden gebruikt om SQL te registreren, maar dit wordt beter afgehandeld door een van de mechanismen die zijn afgestemd op logboekregistratie. Deze pagina geeft een overzicht van elk van deze mechanismen en beschrijft wanneer ze moeten worden gebruikt.
Snelzoekgids
De onderstaande tabel bevat een beknopt overzicht van de verschillen tussen de hier beschreven mechanismen.
| Mechanisme | Async | Scope | Geregistreerd | Beoogd gebruik |
|---|---|---|---|---|
| Eenvoudige logboekregistratie | No | Afhankelijk van de context | Contextconfiguratie | Logboekregistratie van ontwikkelingstijd |
| Microsoft.Extensions.Logging | No | Afhankelijk van de context* | D.I. of contextconfiguratie | Productielogboekregistratie |
| Gebeurtenissen | No | Per context | Op elk gewenst moment | Reageren op EF-gebeurtenissen |
| Interceptors | Ja | Per context | Contextconfiguratie | EF-bewerkingen bewerken |
| Diagnostische luisteraars | No | Verwerken | Wereldwijd | Applicatiediagnostiek |
*Normaal gesproken Microsoft.Extensions.Logging wordt per toepassing geconfigureerd via afhankelijkheidsinjectie. Op EF-niveau kan elke context echter zo nodig worden geconfigureerd met een andere logger.
Eenvoudige logboekregistratie
EF Core-logboeken kunnen worden geopend vanuit elk type toepassing door gebruik te maken van LogTo wanneer u een DbContext-exemplaar configureert. Deze configuratie wordt vaak gedaan in een overschrijving van DbContext.OnConfiguring. Voorbeeld:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.LogTo(Console.WriteLine);
Dit concept is vergelijkbaar met Database.Log in EF6.
Zie Eenvoudige logboekregistratie voor meer informatie.
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging is een uitbreidbaar logboekregistratiemechanisme met invoegtoepassingsproviders voor veel algemene logboekregistratiesystemen. EF Core is volledig geïntegreerd met Microsoft.Extensions.Logging en deze vorm van logboekregistratie wordt standaard gebruikt voor ASP.NET Core-toepassingen.
Zie Microsoft.Extensions.Logging gebruiken in EF Core voor meer informatie.
Gebeurtenissen
EF Core stelt .NET-gebeurtenissen beschikbaar om als callbacks te fungeren wanneer bepaalde dingen gebeuren in de EF Core-code. Gebeurtenissen zijn eenvoudiger dan interceptors en maken flexibelere registratie mogelijk. Ze zijn echter strikt synchroon en kunnen daarom geen niet-blokkerende asynchrone I/O uitvoeren.
Gebeurtenissen worden geregistreerd per DbContext-exemplaar en deze registratie kan op elk gewenst moment worden uitgevoerd. Gebruik een diagnostische listener om dezelfde informatie op te halen, maar voor alle DbContext-exemplaren in het proces.
Zie .NET-gebeurtenissen in EF Core voor meer informatie.
Onderschepping
EF Core-interceptors maken onderschepping, wijziging en/of onderdrukking van EF Core-bewerkingen mogelijk. Dit omvat databasebewerkingen op laag niveau, zoals het uitvoeren van een opdracht, evenals bewerkingen op een hoger niveau, zoals aanroepen naar SaveChanges.
Interceptors verschillen van loggen en diagnostiek doordat ze het wijzigen of onderdrukken van de bewerking die wordt onderschept mogelijk maken. Eenvoudige logboekregistratie of Microsoft.Extensions.Logging zijn betere opties voor logboekregistratie.
Interceptors worden geregistreerd per DbContext-instantie wanneer de context geconfigureerd wordt. Gebruik een diagnostische listener om dezelfde informatie op te halen, maar voor alle DbContext-exemplaren in het proces.
Zie Interception voor meer informatie.
Diagnostische listeners
Diagnostische listeners maken het mogelijk te luisteren naar enige EF Core-gebeurtenis die plaatsvindt in het huidige .NET-proces.
Diagnostische listeners zijn niet geschikt voor het ophalen van gebeurtenissen van één DbContext-exemplaar. EF Core-interceptors bieden toegang tot dezelfde gebeurtenissen met registratie per context.
Diagnostische listeners zijn niet ontworpen voor logboekregistratie. Eenvoudige logboekregistratie of Microsoft.Extensions.Logging zijn betere opties voor logboekregistratie.
Zie Diagnostische listeners gebruiken in EF Core voor meer informatie.